1、引入依赖
只引入PageHelper不会自动适配SpringBoot失效,还需要整合依赖pagehelper-spring-boot-autoconfigure
<!--pagehelper分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.3.0</version></dependency><!-- Mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version></dependency>
2、配置文件配置相应的参数
application.yml
pagehelper:auto-dialect: onreasonable: truesupport-methods-arguments: truepage-size-zero: trueparams: count=countSql
application.properties
#分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect 属性来指定分页插件是否开启断言。pagehelper.helper-dialect=on#分页合理化参数,默认值为 false 。当该参数设置为 true 时, pageNum<=0 时会查询第一页, pageNum>pages (超过总数时),会查询最后一页。pagehelper.reasonable=true#支持通过Mapper接口参数传递page参数,默认值为falsetpagehelper.support-methods-arguments=true#默认值为 false ,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit =0 就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是 Page 类型)。pagehelper.pageSizeZero=true#为了支持 startPage(Object params) 方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值pagehelper.params=count=countSql
3、使用
package com.fcant.competition.service.impl;import com.fcant.competition.bean.CompetitionType;import com.fcant.competition.mapper.CompetitionTypeMapper;import com.fcant.competition.service.ICompetitionTypeService;import com.fcant.competition.utils.MsgUtil;import com.github.pagehelper.PageHelper;import com.github.pagehelper.PageInfo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;/*** CompetitionTypeServiceImpl* <p>* encoding:UTF-8** @author Fcant 下午 22:26:05 2020/4/17/0017*/@Servicepublic class CompetitionTypeServiceImpl implements ICompetitionTypeService {@AutowiredCompetitionTypeMapper competitionTypeMapper;@Overridepublic MsgUtil getAllCompetitionType(Integer page, Integer pageSize) {PageHelper.startPage(page, pageSize);List<CompetitionType> competitionTypes = competitionTypeMapper.selectAll();PageInfo<CompetitionType> pageInfo = new PageInfo<>(competitionTypes);return MsgUtil.success().addData("pageInfo", pageInfo);}}
4、使用提示
- 只有紧跟在
PageHelper.startPage()方法后的第一个Mybatis的查询(Select)方法会被分页。 - 请不要在系统中配置多个分页插件(使用Spring时,mybatis-config.xml和Spring配置方式,请选择其中一种,不要同时配置多个分页插件)!
- 对于带有for update的sql,会抛出运行时异常,对于这样的sql建议手动分页,毕竟这样的sql需要重视。
- 由于嵌套结果方式会导致结果集被折叠,因此分页查询的结果在折叠后总数会减少,所以无法保证分页结果数量正确。
