1 前言
近期在做项目的时候,遇到了一个问题:在使用MyBatis的分页插件(pagehelper)时,发现其分页不生效,找了许多方法才得以解决,故写下这篇文章记录一下,帮助跟我遇到同样问题的同学~
2 引入 PageHelper 注意要点
2.1 检查引入的包是否正确
建议使用 SpringBoot 框架的同学,都引入 pagehelper 与 SpringBoot 项目的整合包,避免不必要冲突影响插件的使用。
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.10</version>
</dependency>
2.2 使用 application.yml 配置
pagehelper:# 设置方言,此处指定 MySQL 数据库helper-dialect: mysql# 是否启动合理化,默认是 false。# 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages(最大页数)会查询最后一页。# 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据reasonable: true# 是否支持接口参数来传递分页参数,默认falsesupport-methods-arguments: true# 为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值params: count=countSql# 默认值为 false,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit = 0 就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是 Page 类型)page-size-zero: true
3.如果还是实现不了分页的效果,那么可以试试分页的拦截器,添加好了就可以了
import com.github.pagehelper.PageInterceptor;
import org.apache.ibatis.plugin.Interceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** 分页拦截器*/
@Configuration
public class PageHelperConfigure {@Beanpublic Interceptor[] plugins() {return new Interceptor[]{new PageInterceptor()};}}