企业培训笔记:SpringBoot+MyBatis项目中实现分页查询
文章目录
- PageHelper 简介
- 一,pom.xml文件添加依赖
- 二,PetMapper中添加分页查询方法
- 三,PetMapper.xml定义对应SQL语句
- 四,SpringBootMyBatisApplicationTests添加测试方法
- 五,PageHelper说明
- (一)PageHelper.startPage(2, 3)
- (二)调用时机
- (三)底层原理
- (四)与 SQL 输出的对应关系
- 六,运行testGetPetByPage()方法
PageHelper 简介
PageHelper 是一款针对 MyBatis 框架的开源分页插件,由国内开发者开发,旨在简化 MyBatis 中分页查询的开发流程。它通过拦截 SQL 执行过程,自动对查询语句进行分页处理,无需手动编写复杂的分页 SQL,极大提升了开发效率。
一,pom.xml文件添加依赖
1,将下面的代码,添加到pom.xml文件中。
<!--pagehelper分页插件依赖-->
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.7</version>
</dependency>
2,刷新依赖,导入或下载到本地仓库。
3,如下图所示,成功导入依赖。
二,PetMapper中添加分页查询方法
// 分页查询宠物信息
public List<Pet> getPetByPage();
三,PetMapper.xml定义对应SQL语句
<!-- 分页查询宠物信息 -->
<select id="getPetByPage" resultType="net.army.entity.Pet">select * from pet
</select>
四,SpringBootMyBatisApplicationTests添加测试方法
// 测试分页查询宠物信息
@Test
void testGetPetByPage() { Page<Pet> page = PageHelper.startPage(2, 3); List<Pet> pets = petMapper.getPetByPage(); System.out.println("总记录数:" + page.getTotal());System.out.println("总页数:" + page.getPages()); for (Pet pet : pets) { System.out.println(pet); }
}
五,PageHelper说明
(一)PageHelper.startPage(2, 3)
Page<Pet> page = PageHelper.startPage(2, 3);
startPage(2, 3):
- 参数一:表示页码(即第几页),从 1 开始计数(PageHelper 默认约定)。
- 参数二:表示每页的记录数(即每页显示2条数据)。
- 返回值 P a g e < P e t > Page<Pet> Page<Pet>:PageHelper 会创建一个 Page 对象,用于存储分页信息(如页码、每页大小、总记录数等),并绑定到当前线程。后续执行的 SQL 查询会自动应用分页逻辑。
(二)调用时机
必须在执行 SQL 查询前调用 startPage,否则分页无效。
PageHelper.startPage(2, 3); // 开启分页
List<Pet> petList = petMapper.selectAll(); // 执行查询,SQL 会自动添加 LIMIT
(三)底层原理
PageHelper
通过 MyBatis
拦截器 实现分页。当调用 startPage
后,它会:
- 拦截后续的 SQL 查询,根据页码和每页大小生成分页语句(如 MySQL 的 L I M I T ? , ? LIMIT ?, ? LIMIT?,?)。
- 自动执行 COUNT 查询获取总记录数(除非手动禁用)。
- 将分页结果封装到
Page
对象中。
(四)与 SQL 输出的对应关系
分页查询中对应的 SQL
语句为:
select * from pet LIMIT 3, 3
- 第一个3:偏移量(OFFSET),计算方式为 (页码-1)×每页大小,即 (2-1)×3=3。
- 第二个3:每页记录数(LIMIT)。
六,运行testGetPetByPage()方法
1,单击绿色运行按钮。
2,单击【Run ‘testGetPetByPage()’】。
3,查看控制运行结果。