- pom.xml
<!-- mybatis的分页插件pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
- application.properties
# pagehelper properties
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
- Java
//currentPage 当前页页码
//pageSize 一页展示多少条
public PageInfo getList(Integer currentPage,Integer pageSize){
PageHelper.startPage(currentPage,pageSize);
List<Test> list = testService.getList();
PageInfo<Test> testPageInfo = new PageInfo<>(list);
return testPageInfo;
}
- 分页效果
{
"total": 10,
"list": [{
"id": 1,
"name": "xxxx",
"age": 11
}, {
"id": 2,
"name": "xxxx",
"age": 11
}],
"pageNum": 1,
"pageSize": 2,
"size": 2,
"startRow": 1,
"endRow": 2,
"pages": 5,
"prePage": 0,
"nextPage": 2,
"isFirstPage": true,
"isLastPage": false,
"hasPreviousPage": false,
"hasNextPage": true,
"navigatePages": 8,
"navigatepageNums": [1, 2, 3, 4, 5],
"navigateFirstPage": 1,
"navigateLastPage": 5,
"firstPage": 1,
"lastPage": 5
}
- pageInfo中的成员变量说明
//当前页
· private int pageNum;
· //每页的数量
· private int pageSize;
· //当前页的数量
· private int size;
· //由于startRow和endRow不常用,这里说个具体的用法
· //可以在页面中"显示startRow到endRow 共size条数据"
·
· //当前页面第一个元素在数据库中的行号
· private int startRow;
· //当前页面最后一个元素在数据库中的行号
· private int endRow;
· //总记录数
· private long total;
· //总页数
· private int pages;
· //结果集
· private List<T> list;
·
· //第一页
· private int firstPage;
· //前一页
· private int prePage;
·
· //是否为第一页
· private boolean isFirstPage = false;
· //是否为最后一页
· private boolean isLastPage = false;
· //是否有前一页
· private boolean hasPreviousPage = false;
· //是否有下一页
· private boolean hasNextPage = false;
· //导航页码数
· private int navigatePages;
· //所有导航页号
· private int[] navigatepageNums;
- 遇到问题(深坑):
当数据库表内数据比较少时,比如只有6条数据,使用pageHelper进行分页查询时,一页10条,当查询第二页内容时返回数据依然是这6条数据,不管页码超出多少一直都会返回数据
- 原因:
pageHelper里面自带的一个功能,叫做reasonable分页参数合理化,3.3.0以上版本可用,默认是false。
当reasonable=true时在pageNum<1会查询第一页,如果pageNum>pages会查询最后一页
也就是说当pageNum>你的最大页数时会返回最后一页的数据而不是返回null
禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据
- 解决办法:
#禁用reasonable分页参数合理化
pagehelper.reasonable=false