PageHelper入门
大家好,今天给大家介绍一款功能非常强大的分页插件-----PageHelper。
分页是我们开发过程中常用的一个功能,但是写起来非常的繁琐,Mybatis则集成了PageHelper这一插件,
下面以一个实例展开。
笔者的例子是maven项目,开发工具是Idea,框架为SpringBoot,配置文件格式为*.yml,数据库为mysql。
首先我们导入依赖
<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
在配置文件中添加以下属性
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count==countSql
page-size-zero: true
关于参数的说明
-
helper-dialect: 配置数据库连接方式
-
reasonable: 分页合理化参数,默认值为false,参数设置为true时,当pageNum<=0,查询第一页数据,当pageNum>总页数时,会查询最后一页。当使用默认值时,会根据参数进行查询。
-
params: count==countSql 设置当前页记录条数,比如,最后一页只有三条数据,此时count为3.
-
support-methods-arguments: 支持通过Mapper接口的参数来传递分页参数,分页插件会从查询方法的参数值中,自动根据上面 params 配置的 字段中取值,查找到合适的值时就会自动分页。
-
page-size-zero:默认值为false,当设置参数为true时,如果pageSize=0就会查询全部结果(即没有执行分页查询,但返回结果仍为Page类型。)
更多参数请查阅官方文档:
在StudentService中添加方法
在实现方法中添加如下代码
public PageInfo<Student> search(int pageNum, int pageSize) {
//设置当前页和页尺寸
PageHelper.startPage(pageNum,pageSize);
//获取数据
List<Student> students = studentDao.findAll();
//声名分页对象,使用list作为参数
PageInfo<Student> studentPageInfo = new PageInfo<>(students);
return studentPageInfo;
}
创建测试方法进行单元测试
结果如图
原理
结合上图可以看到PageHelper的执行过程,它一共执行了两次sql,第一次是自动查询表中所有数据,然后第二次才是根据我们传入的参数进行查询,在此过程中,总记录数,总页数等参数都是工具帮我们自动生成的,也就是说,我们只需要告诉它我要查第几页的数据,每一页几条数据,剩下的工作都由工具来完成,可以说是非常方便了。
笔者也是刚接触到这样的插件,如有不足之处敬请指教,更多学习请前往Pagehelper官网: