MyBatis分页插件PageHelper的使用
PageHelper简介
PageHelper是Github上开源的MyBatis分页插件,使用起来非常的简单,方便,并且支持任何复杂的单表、多表分页。
Github网址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md。
使用maven引入相关的jar
org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 com.github.pagehelper pagehelper-spring-boot-starter 1.2.10<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
配置PageHelper方言
在项目配置文件yml中配置:
pagehelper:
helperDialect: oracle
reasonable: true
supportMethodsArguments: true
params: count=countSql
分析PageInfo类种主要属性的用法
PageInfo是pagehelper给我们封装的一个类,里面有一些我们做分页表常用的属性。
pageNum:当前为第几页
pageSize:每页的数据行数
startRow:当前页数据从第几条开始
endRow:当前页数据从第几条结束
pages:总页数
prePage:上一页页数
nextPage:下一页页数
hasPreviousPage:是否有上一页
hasNextPage:是否有下一页
navigatepageNums:所有页码的数组
编写业务逻辑代码
使用pagehelper非常的简单,只需要在你想要分页的查询逻辑前后添加以下代码即可,代码:
PageHelper.startPage(pageNum, pageSize);
List<Entity> list = entityMapper.getList(); //查询
PageInfo<Entity> page = new PageInfo<Entity>(list );
pageNum:页数(第几页)
pageSize:每页的数据行数
PageHelper进阶使用
上述方法仅限于单条查询使用,如果是多个查询结果,只会对startPage下的第一个查询结果进行需要对多条查询结果合并且分页需要以下操作即可,代码:
List<Entity> list = entityMapper.getList(); //查询
List<Entity> newList = new ArrayList<>(); //新建空list
if (pageSize*pageNumber > list .size()){
newList = list .subList((pageNumber -1)*10,pageSize);
}else{
newList = list .subList((pageNumber-1)*10,pageSize*pageNumber);
}
PageInfo<XclMaterialKey> page = new PageInfo<XclMaterialKey>(newList );
page .setTotal(list .size());