????????MyBatis,作为目前流行的ORM框架,大大方便了日常开发。而对于分页查询,虽然可以通过SQL的limit语句实现,但是比较繁琐。而MyBatis PageHelper的出现,则解决了这一痛点。这里将介绍如何在Spring Boot、MyBatis的环境中通过MyBatis PageHelper高效方便的实现分页查询
<!--MyBatis 分页插件: MyBatis PageHelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
在application.properties配置文件中添加MyBatis PageHelper的配置项
# PageHelper 分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
????????通过 MyBatis PageHelper 进行分页查询实际上非常简单,只需在service(或mapper)方法执行查询前,调用一次 PageHelper.startPage(pageNum,pageSize) 来设置分页查询参数即可,其中pageNum 为记录页数,pageSize 为单页记录数量。此时service(或mapper)方法的查询结果就是分页后的结果了。如果期望获得相关的分页信息,还可以将查询结果封装到PageInfo对象中,以获得总页数、总记录数、当前页数等相关分页信息
????????现在通过一个实际示例,来具体演示操作,这里我们提供了一个分页查询的interface实现类
/**
* QueryPageBean:存放currentPage、pageSize、queryString属性的对象
* currentPage:页码
* pageSize:每页记录数
* queryString:查询条件
* CheckItem:存放一条数据的所有属性的对象
* PageResult:total、rows属性的对象
* total:总记录数
* rows:当前页结果
*/
@Override
public PageResult findPage(QueryPageBean queryPageBean) {
//使用PageHelper
//1设置分页条件
PageHelper.startPage(queryPageBean.getCurrentPage(),queryPageBean.getPageSize());
//2.正常查询
List<CheckItem> checkItemList = checkItemMapper.findPage(queryPageBean);
//3.获取分页信息
PageInfo<CheckItem> checkItemPageInfo = new PageInfo<>(checkItemList);
return new PageResult(checkItemPageInfo.getTotal(),checkItemPageInfo.getList());
}
//第一个参数表示从第几页开始
//第二个参数表示一页多少条记录
//第三个参数表示是否返回总的真实记录数
PageHelper.startPage(currentPage,pageSize,true);
//创建一个PageInfo对象,将Page对象作为参数传入
//getPageNum ()方法获取当前页码
//getPageSize ()方法获取每页显示数量
//getTotal ()方法获取总记录数