修复AbstractDb#page分页查询异常问题

This commit is contained in:
Looly 2023-05-26 23:32:29 +08:00
parent 791ba35ba0
commit d594d5053e
3 changed files with 46 additions and 2 deletions

View File

@ -32,7 +32,8 @@
* 【cron 】 修复SystemTimer无法结束进程问题issue#3090@Github
* 【core 】 修复BeanUtil.copyToList复制Long等类型错误问题issue#3091@Github
* 【poi 】 修复MapRowHandler结果Map无序问题issue#I71SE8@Github
* 【db 】 修复SqlExecutor.execute执行ORACLE insert into select报ORA-00933问题issue#I778U7@Github
* 【db 】 修复SqlExecutor.execute执行ORACLE insert into select报ORA-00933问题issue#I778U7@Gitee
* 【db 】 修复AbstractDb#page分页查询异常问题issue#I73770@Gitee
-------------------------------------------------------------------------------------------------------------
# 5.8.18 (2023-04-27)

View File

@ -889,7 +889,10 @@ public abstract class AbstractDb implements Serializable {
* @since 5.8.11
*/
public <T> PageResult<T> page(CharSequence sql, Page page, Class<T> elementBeanType, Object... params) throws SQLException {
return page(sql, page, (RsHandler<? extends PageResult<T>>) rs -> HandleHelper.handleRsToBeanList(rs, new PageResult<>(page.getPageNumber(), page.getPageSize(), (int) count(sql, params)), elementBeanType), params);
final PageResult<T> result = new PageResult<>(page.getPageNumber(), page.getPageSize(), (int) count(sql, params));
return page(sql, page,
(RsHandler<? extends PageResult<T>>) rs -> HandleHelper.handleRsToBeanList(rs, result, elementBeanType),
params);
}
/**

View File

@ -0,0 +1,40 @@
/*
* Copyright (c) 2023 looly(loolly@aliyun.com)
* Hutool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package cn.hutool.db;
import lombok.Data;
import org.junit.Assert;
import org.junit.Test;
import java.sql.SQLException;
/**
* https://gitee.com/dromara/hutool/issues/I73770
*/
public class IssueI73770Test {
@Test
public void pageTest() throws SQLException {
final PageResult<User> result = Db.use()
.page("select * from user where id = ?"
, new Page(0, 10), User.class, 9);
Assert.assertEquals(1, result.size());
Assert.assertEquals(Integer.valueOf(9), result.get(0).getId());
}
@Data
static class User {
private Integer id;
private String name;
}
}