1. 引入依赖
首先,你需要在你的 Spring Boot 项目中引入 pagehelper-spring-boot-starter
依赖。只需要在 pom.xml
文件中加入这段代码:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.7</version>
</dependency>
这样做后,Spring Boot 会自动帮你配置好分页插件,减少了许多麻烦的设置。
2. 配置分页插件
接着,我们需要在 application.properties
或 application.yml
配置文件中做简单的配置。这些配置决定了分页插件如何工作。
例如,在 application.properties
中配置:
pagehelper.helperDialect=mysql # 选择你的数据库类型(如 MySQL)
pagehelper.reasonable=true # 如果分页时页码大于最大页数,它会自动调整
这两行配置是最常用的,你可以根据自己的需求调整。
3. 分页查询的代码实现
分页的核心代码其实非常简单,重点是在你需要查询数据的地方调用 PageHelper.startPage
来启动分页。
假设你要查询 User
表的数据,并进行分页操作。可以这样写:
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
public List<User> getUsers(int pageNum, int pageSize) {
// 开始分页,传入当前页码和每页显示多少条数据
PageHelper.startPage(pageNum, pageSize);
// 查询用户数据
List<User> users = userMapper.selectAll();
// 通过 PageInfo 来封装分页信息,方便获取总数、当前页、总页数等
PageInfo<User> pageInfo = new PageInfo<>(users);
// 返回分页后的用户列表
return pageInfo.getList(); // 这是分页后的数据
}
4. 返回分页信息
PageHelper.startPage
会根据你传入的 pageNum
(页码)和 pageSize
(每页显示多少条数据)来自动调整查询的 SQL 语句,从而达到分页效果。查询返回的数据是一个普通的 List<User>
。
但是,PageHelper
还会生成一个 PageInfo
对象,它封装了分页信息,包括:
- 总记录数:查询结果总共有多少条数据
- 总页数:根据每页显示的数量,查询结果可以分为多少页
- 当前页码:你当前请求的是第几页
你可以通过 PageInfo
来获取这些信息。
例如:
System.out.println("总记录数:" + pageInfo.getTotal()); // 输出总记录数
System.out.println("总页数:" + pageInfo.getPages()); // 输出总页数
System.out.println("当前页:" + pageInfo.getPageNum()); // 输出当前页码
5. 总结
PageHelper
让分页变得简单,你只需要调用startPage
方法,插件会帮你自动调整查询 SQL,实现分页。- 配置上也非常简单,只需在
application.properties
中做几项基础配置。 - 最终你得到的是分页后的数据,同时还可以通过
PageInfo
获取更多的分页信息。
常见问题:
- 合理分页(
reasonable=true
):这个配置非常有用,它可以防止用户输入一个超出最大页数的页码,避免查询出错。比如用户请求第 100 页,但只有 10 页,合理分页会自动调整请求。 - 性能优化:如果你有很多数据或者查询条件比较复杂,分页查询的性能可能会受影响。考虑为常用的查询字段添加数据库索引,能有效提高性能。
- 注意事项:
1.定义的SQL语句结尾不能加分号;
2.PageHelper仅仅能对紧跟在其后的第一个查询语句进行分页处理