在开发过程中,遇到当pagenum>pages时,还是会返回最后一页数据,纳闷了好久,发现pagehelper有个参数reasonable(分页合理化)是可以处理这个问题,就记录一下!
相关jar包pom.xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
配置文件配置
# PageHelper分页插件
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
参数说明:
`helperDialect/helper-dialect`:指定数据库,不指定的话会默认自动检测数据库类型
`reasonable`:是否启用分页合理化。
如果启用,当pagenum<1时,会自动查询第一页的数据,当pagenum>pages时,自动查询最后一页数据;
不启用的,以上两种情况都会返回空数据
`support-methods-arguments`:默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。
`params`:用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,
不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;
reasonable=reasonable;pageSizeZero=pageSizeZero
调用
使用PageHelper.startPage 静态方法调用startPage ,
特点:
1. 静态方法,传递两个参数(当前页码,每页查询条数)
2. 使用pageHelper 分页的时候,不再关注分页语句,查询全部的语句
3. 自动的对PageHelper.startPage 方法下的第一个sql 查询进行分页
PageHelper.startPage(1,5);
//紧跟着的第一个select 方法会被分页
List list = countryMapper.findAll();