SpringBoot 整合 pagehelper
SpringBoot
集成pagehelper
自然有它的Starter
:PageHelper-Spring-Boot-Starter
pom.xml
添加依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
配置
官方说通常情况下是不需要配置的,如果需要在application.yml
中,以下是部分配置参数:PageHelper
是顶级。
# PageHelper分页插件
pagehelper:
#指定分页插件使用哪种方言,支持:oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,informix,h2,derby。。。
helperDialect: mysql
# pageNum<=0 时会查第一页, pageNum>pages(超过总数时),会查最后一页
reasonable: true
# 支持通过 Mapper 接口参数来传递分页参数,默认值false
supportMethodsArguments: true
# 为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值
params: count=countSql
官方重要提示
'【PageHelper.startPage方法重要提示】'
只有紧跟在PageHelper.startPage方法后的第一个Mybatis的查询(Select)方法会被分页。
'【请不要配置多个分页插件】'
请不要在系统中配置多个分页插件(使用Spring时,mybatis-config.xml和Spring<bean>配置方式,
请选择其中一种,不要同时配置多个分页插件)!
'【分页插件不支持带有for update语句的分页】'
对于带有for update的sql,会抛出运行时异常,对于这样的sql建议手动分页,毕竟这样的sql需要重视。
'【分页插件不支持嵌套结果映射】'
由于嵌套结果方式会导致结果集被折叠,因此分页查询的结果在折叠后总数会减少,所以无法保证分页结果数量正确。
用法
PageHelper.startPage(页码,每页数量)
// 取第1页,每页2条,默认统计总条数。每次调一下它下1条查询就会执行分页。
PageHelper.startPage(1, 2);
List<Poem> list = poemService.list();
// 获取分页信息 (page 会包含 list)
PageInfo page = new PageInfo(list);
听说排序有坑,真到用时,还得注意一下
// 排序就直接写排序条件就行了
PageHelper.startPage(1, 5, "title desc");
/**
* 开始分页
* @param pageNum 页码
* @param pageSize 每页显示数量
*/
public static <E> Page<E> startPage(int pageNum, int pageSize)
/**
* 开始分页
* @param pageNum 页码
* @param pageSize 每页显示数量
* @param count 是否进行count查询,默认 true
*/
public static <E> Page<E> startPage(int pageNum, int pageSize, boolean count)
/**
* 开始分页
* @param pageNum 页码
* @param pageSize 每页显示数量
* @param orderBy 排序
*/
public static <E> Page<E> startPage(int pageNum, int pageSize, String orderBy)
/**
* 开始分页
* @param pageNum 页码
* @param pageSize 每页显示数量
* @param count 是否进行count查询
* @param reasonable 分页合理化,null时用默认配置
* @param pageSizeZero true且pageSize=0时返回全部结果,false时分页,null时用默认配置
*/
public static <E> Page<E> offsetPage(int pageNum, int pageSize, boolean count, Boolean reasonable, Boolean pageSizeZero)
PageHelper.offsetPage(起始位置,每页显示数量)
/**
* 开始分页
* @param offset 起始位置,偏移位置
* @param limit 每页显示数量
*/
public static <E> Page<E> offsetPage(int offset, int limit)
/**
* 开始分页
* @param offset 起始位置,偏移位置
* @param limit 每页显示数量
* @param count 是否进行count查询
*/
public static <E> Page<E> offsetPage(int offset, int limit, boolean count)