Mybatis-PageHelper icon indicating copy to clipboard operation
Mybatis-PageHelper copied to clipboard

如果pageNum和pageSize的值比较大,导致startRow溢出变成负数

Open ryphnyuan opened this issue 4 years ago • 2 comments

  • [x] 我已在 issues 搜索类似问题,并且不存在相同的问题.

异常模板

使用环境

  • PageHelper 版本: 5.2.0
  • 数据库类型和版本: MySQL 8.0.18
  • JDBC_URL: NA

SQL 解析错误

分页参数

PageHelper.startPage(2099999999, 100);

原 SQL

NA
pageNum=2099999999, pageSize=100

期望的结果:

startRow=209999999800

完整异常信息

startRow=-453397704

其他类型的错误

功能建议

详细说明,尽可能提供(伪)代码示例。 com.github.pagehelper.Page的calculateStartAndEndRow方法 this.startRow = this.pageNum > 0 ? (this.pageNum - 1) * this.pageSize : 0; 修改为 this.startRow = this.pageNum > 0 ? (long) (this.pageNum - 1) * this.pageSize : 0; 或者 this.startRow = this.pageNum > 0 ? 1L* (this.pageNum - 1) * this.pageSize : 0;

ryphnyuan avatar Dec 01 '21 07:12 ryphnyuan

image

建议pageNum、pageSize 数据类型改为long 类型的, 不然数据过大后就变为负数了

zhangleijie avatar Jun 19 '22 03:06 zhangleijie

这么大的数据量还这样分页吗?

pagehelper avatar Nov 02 '23 15:11 pagehelper