mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
fix code
This commit is contained in:
parent
b5b237426f
commit
e13983d182
@ -735,6 +735,22 @@ public abstract class AbstractDb<R extends AbstractDb<R>> extends DefaultConnect
|
|||||||
|
|
||||||
// region ----- page
|
// region ----- page
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询,结果为Bean列表,不计算总数<br>
|
||||||
|
*
|
||||||
|
* @param <T> Bean类型
|
||||||
|
* @param sql SQL构建器,可以使用{@link SqlBuilder#of(CharSequence)} 包装普通SQL
|
||||||
|
* @param page 分页对象
|
||||||
|
* @param elementBeanType 结果集处理对象
|
||||||
|
* @param params 参数
|
||||||
|
* @return 结果对象
|
||||||
|
*/
|
||||||
|
public <T> PageResult<T> pageForBeanResult(final CharSequence sql, final Page page,
|
||||||
|
final Class<T> elementBeanType, final Object... params) {
|
||||||
|
final PageResult<T> result = new PageResult<>(page, (int) count(sql, params));
|
||||||
|
return page(sql, page, PageResultHandler.of(elementBeanType, result), params);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询,结果为Bean列表,不计算总数<br>
|
* 分页查询,结果为Bean列表,不计算总数<br>
|
||||||
*
|
*
|
||||||
|
@ -12,11 +12,11 @@
|
|||||||
|
|
||||||
package org.dromara.hutool.db;
|
package org.dromara.hutool.db;
|
||||||
|
|
||||||
|
import org.dromara.hutool.core.array.ArrayUtil;
|
||||||
import org.dromara.hutool.core.io.IoUtil;
|
import org.dromara.hutool.core.io.IoUtil;
|
||||||
import org.dromara.hutool.core.lang.Assert;
|
import org.dromara.hutool.core.lang.Assert;
|
||||||
import org.dromara.hutool.core.map.MapUtil;
|
import org.dromara.hutool.core.map.MapUtil;
|
||||||
import org.dromara.hutool.core.text.StrUtil;
|
import org.dromara.hutool.core.text.StrUtil;
|
||||||
import org.dromara.hutool.core.array.ArrayUtil;
|
|
||||||
import org.dromara.hutool.db.dialect.Dialect;
|
import org.dromara.hutool.db.dialect.Dialect;
|
||||||
import org.dromara.hutool.db.dialect.DialectFactory;
|
import org.dromara.hutool.db.dialect.DialectFactory;
|
||||||
import org.dromara.hutool.db.handler.NumberHandler;
|
import org.dromara.hutool.db.handler.NumberHandler;
|
||||||
@ -324,12 +324,11 @@ public class DialectRunner implements Serializable {
|
|||||||
*/
|
*/
|
||||||
public PageResult<Entity> page(final Connection conn, final Query query) throws DbRuntimeException {
|
public PageResult<Entity> page(final Connection conn, final Query query) throws DbRuntimeException {
|
||||||
final Page page = query.getPage();
|
final Page page = query.getPage();
|
||||||
final PageResultHandler pageResultHandler = new PageResultHandler(
|
final PageResultHandler<Entity> entityResultHandler = PageResultHandler.of(
|
||||||
new PageResult<>(page.getPageNumber(), page.getPageSize(),
|
|
||||||
// 分页查询中总数的查询要去掉分页信息
|
// 分页查询中总数的查询要去掉分页信息
|
||||||
(int) count(conn, query.clone().setPage(null))),
|
new PageResult<>(page, (int) count(conn, query.clone().setPage(null))));
|
||||||
this.caseInsensitive);
|
|
||||||
return page(conn, query, pageResultHandler);
|
return page(conn, query, entityResultHandler.setCaseInsensitive(caseInsensitive));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -367,10 +366,10 @@ public class DialectRunner implements Serializable {
|
|||||||
* @throws DbRuntimeException SQL执行异常
|
* @throws DbRuntimeException SQL执行异常
|
||||||
*/
|
*/
|
||||||
public PageResult<Entity> page(final Connection conn, final SqlBuilder sqlBuilder, final Page page) throws DbRuntimeException {
|
public PageResult<Entity> page(final Connection conn, final SqlBuilder sqlBuilder, final Page page) throws DbRuntimeException {
|
||||||
final PageResultHandler pageResultHandler = new PageResultHandler(
|
final PageResultHandler<Entity> entityResultHandler = PageResultHandler.of(
|
||||||
new PageResult<>(page.getPageNumber(), page.getPageSize(), (int) count(conn, sqlBuilder)),
|
new PageResult<>(page, (int) count(conn, sqlBuilder)));
|
||||||
this.caseInsensitive);
|
|
||||||
return page(conn, sqlBuilder, page, pageResultHandler);
|
return page(conn, sqlBuilder, page, entityResultHandler.setCaseInsensitive(caseInsensitive));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,6 +25,9 @@ import java.util.ArrayList;
|
|||||||
public class PageResult<T> extends ArrayList<T> {
|
public class PageResult<T> extends ArrayList<T> {
|
||||||
private static final long serialVersionUID = 9056411043515781783L;
|
private static final long serialVersionUID = 9056411043515781783L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认每页结果数
|
||||||
|
*/
|
||||||
public static final int DEFAULT_PAGE_SIZE = Page.DEFAULT_PAGE_SIZE;
|
public static final int DEFAULT_PAGE_SIZE = Page.DEFAULT_PAGE_SIZE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -66,6 +69,17 @@ public class PageResult<T> extends ArrayList<T> {
|
|||||||
this.pageSize = pageSize <= 0 ? DEFAULT_PAGE_SIZE : pageSize;
|
this.pageSize = pageSize <= 0 ? DEFAULT_PAGE_SIZE : pageSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造
|
||||||
|
*
|
||||||
|
* @param page 分页对象
|
||||||
|
* @param total 结果总数
|
||||||
|
* @since 6.0.0
|
||||||
|
*/
|
||||||
|
public PageResult(final Page page, final int total) {
|
||||||
|
this(page.getPageNumber(), page.getPageSize(), total);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造
|
* 构造
|
||||||
*
|
*
|
||||||
|
@ -21,52 +21,71 @@ import java.sql.SQLException;
|
|||||||
/**
|
/**
|
||||||
* 分页结果集处理类 ,处理出的结果为PageResult
|
* 分页结果集处理类 ,处理出的结果为PageResult
|
||||||
*
|
*
|
||||||
|
* @param <T> Bean类型
|
||||||
* @author loolly
|
* @author loolly
|
||||||
*/
|
*/
|
||||||
public class PageResultHandler implements RsHandler<PageResult<Entity>> {
|
public class PageResultHandler<T> implements RsHandler<PageResult<T>> {
|
||||||
private static final long serialVersionUID = -1474161855834070108L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
private final PageResult<Entity> pageResult;
|
private final Class<T> beanClass;
|
||||||
|
private final PageResult<T> pageResult;
|
||||||
/**
|
/**
|
||||||
* 是否大小写不敏感
|
* 是否大小写不敏感
|
||||||
*/
|
*/
|
||||||
private final boolean caseInsensitive;
|
private boolean caseInsensitive;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建一个 EntityHandler对象<br>
|
* 创建 PageResultHandler
|
||||||
* 结果集根据给定的分页对象查询数据库,填充结果
|
|
||||||
*
|
*
|
||||||
* @param pageResult 分页结果集空对象
|
* @param pageResult 分页结果集空对象
|
||||||
* @return EntityHandler对象
|
* @return BeanResultHandler
|
||||||
*/
|
*/
|
||||||
public static PageResultHandler of(final PageResult<Entity> pageResult) {
|
public static PageResultHandler<Entity> of(final PageResult<Entity> pageResult) {
|
||||||
return new PageResultHandler(pageResult);
|
return of(Entity.class, pageResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建 PageResultHandler
|
||||||
|
*
|
||||||
|
* @param <T> Bean类型
|
||||||
|
* @param beanClass bean类
|
||||||
|
* @param pageResult 分页结果集空对象
|
||||||
|
* @return PageResultHandler
|
||||||
|
*/
|
||||||
|
public static <T> PageResultHandler<T> of(final Class<T> beanClass, final PageResult<T> pageResult) {
|
||||||
|
return new PageResultHandler<>(beanClass, pageResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造<br>
|
* 构造<br>
|
||||||
* 结果集根据给定的分页对象查询数据库,填充结果
|
* 结果集根据给定的分页对象查询数据库,填充结果
|
||||||
*
|
*
|
||||||
|
* @param beanClass bean类
|
||||||
* @param pageResult 分页结果集空对象
|
* @param pageResult 分页结果集空对象
|
||||||
*/
|
*/
|
||||||
public PageResultHandler(final PageResult<Entity> pageResult) {
|
public PageResultHandler(final Class<T> beanClass, final PageResult<T> pageResult) {
|
||||||
this(pageResult, false);
|
this.beanClass = beanClass;
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 构造<br>
|
|
||||||
* 结果集根据给定的分页对象查询数据库,填充结果
|
|
||||||
*
|
|
||||||
* @param pageResult 分页结果集空对象
|
|
||||||
* @param caseInsensitive 是否大小写不敏感
|
|
||||||
*/
|
|
||||||
public PageResultHandler(final PageResult<Entity> pageResult, final boolean caseInsensitive) {
|
|
||||||
this.pageResult = pageResult;
|
this.pageResult = pageResult;
|
||||||
this.caseInsensitive = caseInsensitive;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置是否忽略大小写
|
||||||
|
*
|
||||||
|
* @param caseInsensitive 是否忽略大小写
|
||||||
|
* @return this
|
||||||
|
*/
|
||||||
|
public PageResultHandler<T> setCaseInsensitive(final boolean caseInsensitive) {
|
||||||
|
this.caseInsensitive = caseInsensitive;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public PageResult<Entity> handle(final ResultSet rs) throws SQLException {
|
public PageResult<T> handle(final ResultSet rs) throws SQLException {
|
||||||
return ResultSetUtil.toEntityList(rs, pageResult, this.caseInsensitive);
|
if (Entity.class == this.beanClass) {
|
||||||
|
return (PageResult<T>) ResultSetUtil.toEntityList(
|
||||||
|
rs, (PageResult<Entity>) pageResult, this.caseInsensitive);
|
||||||
|
}
|
||||||
|
return ResultSetUtil.toBeanList(rs, this.pageResult, this.beanClass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,11 +20,28 @@ import java.util.List;
|
|||||||
|
|
||||||
public class IssueI73770Test {
|
public class IssueI73770Test {
|
||||||
|
|
||||||
|
private final String sql = "select * from user where id = ?";
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void pageTest() {
|
void pageForEntityResultTest() {
|
||||||
|
final PageResult<Entity> result = Db.of()
|
||||||
|
.page(sql, new Page(0, 10), 9);
|
||||||
|
Assertions.assertEquals(1, result.size());
|
||||||
|
Assertions.assertEquals(9, result.get(0).get("id"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void pageForBeanResultTest() {
|
||||||
|
final PageResult<User> result = Db.of()
|
||||||
|
.pageForBeanResult(sql, new Page(0, 10), User.class, 9);
|
||||||
|
Assertions.assertEquals(1, result.size());
|
||||||
|
Assertions.assertEquals(9, result.get(0).getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void pageForBeanListTest() {
|
||||||
final List<User> result = Db.of()
|
final List<User> result = Db.of()
|
||||||
.pageForBeanList("select * from user where id = ?"
|
.pageForBeanList(sql, new Page(0, 10), User.class, 9);
|
||||||
, new Page(0, 10), User.class, 9);
|
|
||||||
Assertions.assertEquals(1, result.size());
|
Assertions.assertEquals(1, result.size());
|
||||||
Assertions.assertEquals(9, result.get(0).getId());
|
Assertions.assertEquals(9, result.get(0).getId());
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user