PageHelper 插件实现分页查询

主要作用是:从数据库分页查询检查项数据,并返回分页结果给前端

java 复制代码
// 1. 开启分页:告诉PageHelper当前要查第几页、每页多少条
PageHelper.startPage(queryPageBean.getCurrentPage(), queryPageBean.getPageSize());

// 2. 执行查询:调用DAO层查询数据(PageHelper会自动拦截并拼接分页SQL)
List<CheckItem> checkItemList = checkItemDao.findPage(queryPageBean.getQueryString());

// 3. 封装分页信息:把查询结果转成PageInfo,自动计算总条数、总页数等
PageInfo<CheckItem> pageInfo = new PageInfo<>(checkItemList);

// 4. 返回结果:只把前端需要的 总记录数 + 当前页数据 封装返回
return new PageResult(pageInfo.getTotal(), pageInfo.getList());
  1. PageHelper.startPage(当前页, 每页条数);

作用:开启分页功能

这是 PageHelper 的核心方法

传入两个参数:

getCurrentPage():用户要查的第几页(比如第 1 页、第 2 页)

getPageSize():每页显示多少条数据(比如每页 10 条)

原理:它会把分页参数存到当前线程中,下一条执行的 SQL 查询会被自动拦截,拼接上 limit 分页语句。

  1. List<CheckItem> checkItemList = checkItemDao.findPage(查询条件);

作用:执行真正的业务查询

调用 DAO(数据访问层)的方法,去数据库查检查项(CheckItem)数据

你原本写的 SQL 可能是:

sql 复制代码
select * from checkitem where name like '%xxx%'

PageHelper 会自动修改 SQL 为:

sql 复制代码
select * from checkitem where name like '%xxx%' limit 0,10

所以这里返回的 checkItemList 不是全部数据,只是当前页的列表。

3. PageInfo<CheckItem> pageInfo = new PageInfo<>(checkItemList);
  • 作用把查询结果封装成分页对象,自动计算所有分页信息
  • PageInfo 是 PageHelper 提供的分页 Bean,里面包含:
    • 当前页数据列表
    • 总记录数
    • 总页数
    • 是否有上一页 / 下一页
    • 页码导航等
  • 你只需要把查询到的 list 丢进去,它自动帮你算好一切

4. return new PageResult(总条数, 当前页列表);
  • 作用返回统一格式的分页结果给前端
  • 前端一般只需要两个核心数据:
    1. total总共有多少条数据(用于前端计算页码)
    2. rows/list当前页的数据列表
  • 所以最后封装成自定义的 PageResult 对象返回。

整体执行流程(一句话总结)

  1. 开启分页
  2. 正常查询
  3. 自动分页
  4. 封装结果
  5. 返回给前端

PageHelper 最方便的地方:你不需要自己写 limit、不需要自己算总条数、不需要算分页参数,全部自动处理。


常见对象说明

  • QueryPageBean:前端传过来的分页 + 查询条件封装类
  • CheckItem:数据库表对应的实体类(检查项)
  • PageInfo:PageHelper 提供的完整分页对象
  • PageResult:后端自定义的返回给前端的统一分页结果

总结

  1. 这是MyBatis + PageHelper 标准分页代码,固定写法
  2. 核心:startPage() 开启分页 → 执行查询 → 封装 PageInfo → 返回结果
  3. 不用手写分页 SQL,简化开发、避免出错
  4. 最终返回给前端:总条数 + 当前页数据
相关推荐
Javatutouhouduan3 小时前
2026Java面试的正确打开方式!
java·高并发·java面试·java面试题·后端开发·java编程·java八股文
JAVA面经实录9174 小时前
Java初级最终完整版学习路线图
java·spring·eclipse·maven
Cat_Rocky5 小时前
k8s-持久化存储,粗浅学习
java·学习·kubernetes
鹿角片ljp5 小时前
从告警检测到智能研判:SQL 注入研判模型的设计与实践
数据库·sql
知识领航员5 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
释怀°Believe5 小时前
Spring解析
java·后端·spring
ooseabiscuit6 小时前
Laravel4.x:现代PHP框架的奠基之作
java·开发语言·php
节奏昂7 小时前
【一份基础软件的下载地址和安装地址】
java
没什么本事7 小时前
关于C# panel 添加lable问题 -- 明确X和Y 位置错误
android·java·c#