pagehelper分页插件使用方法

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.propertiesapplication.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仅仅能对紧跟在其后的第一个查询语句进行分页处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值