文章目录
- 一、简介
- 二、集成步骤
- 三、使用方法
- 四、注意事项
- 五、高级用法
一、简介
PageHelper 是一个开源的 MyBatis 分页插件,它可以帮助我们在使用 MyBatis 进行数据库操作时方便地实现分页功能。通过简单的配置和少量的代码修改,就可以在查询数据时实现分页效果,大大提高了开发效率。
二、集成步骤
- 添加依赖
如果你使用的是 Maven 项目,在 pom.xml 中添加以下依赖:
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>最新版本号</version>
</dependency>
你可以在 Maven 中央仓库 中查找最新的版本号。
- 配置 PageHelper
如果你使用的是 Spring Boot 项目,PageHelper 会自动进行配置,无需额外的配置。如果是传统的 Spring 项目,需要在 MyBatis 的配置文件中添加 PageHelper 的插件配置:
<plugins><plugin interceptor="com.github.pagehelper.PageInterceptor"><!-- 配置参数,根据需要进行调整 --><property name="reasonable" value="true"/><property name="supportMethodsArguments" value="true"/><property name="params" value="count=countSql"/></plugin>
</plugins>
配置参数说明:
reasonable:分页合理化参数,默认值为 false。当该参数设置为 true 时,pageNum 小于 1 会查询第一页,pageNum 大于总页数会查询最后一页。
supportMethodsArguments:支持通过 Mapper 接口参数来传递分页参数,默认值为 false。
params:为了支持 startPage(Object params) 方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值。
三、使用方法
基本分页查询
在需要进行分页查询的方法中,调用 PageHelper.startPage 方法来开启分页功能,然后执行查询操作。示例代码如下:
@Override
public JsonVO<PageInfo<XiangXiDanJvVO>> listXiangXiDanJv(XiangXiDanJvQuery query) {try {// 1. 启动分页PageHelper.startPage((int) query.getPageIndex(), (int) query.getPageSize());// 2. 执行查询(会被 PageHelper 拦截)List<XiangXiDanJvVO> list = inspurMapper.listXiangXiDanJv(query);// 3.用pageInfo包装PageInfo<XiangXiDanJvVO> page = new PageInfo<>(list);return JsonVO.success(page );} catch (Exception e) {log.error("分页查询详细单据失败:{}", e.getMessage());return JsonVO.fail(null);}
}
四、注意事项
-
分页方法调用顺序
PageHelper.startPage 方法必须在执行查询方法之前调用,否则分页功能将失效。 -
多次分页问题
在同一个方法中,如果需要进行多次分页查询,每次查询前都需要调用 PageHelper.startPage 方法开启分页功能。 -
事务问题
在使用事务时,需要确保 PageHelper.startPage 方法在事务内部调用,否则可能会出现分页不准确的问题。
五、高级用法
- 排序功能
PageHelper 支持在分页查询时进行排序。可以通过 PageHelper.startPage 方法的第三个参数来指定排序规则,示例代码如下:
PageHelper.startPage(pageNum, pageSize, "id DESC");
List<User> userList = userMapper.selectAllUsers();
上述代码表示按照 id 字段降序排序。