尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

PageHelper

PageHelper
📅 发布时间:2026/6/17 19:21:43

一、PageHelper的介绍

PageHelper是Mybatis-Plus中的一个插件,主要用于实现数据库的分页查询功能。其核心原理是将传入的页码和条数赋值给一个Page对象,并保存到本地线程ThreadLocal中。接下来,PageHelper会进入Mybatis的拦截器环节,在拦截器中获取并处理刚才保存在ThreadLocal中的分页参数。这些分页参数会与原本的SQL语句和内部已经定义好的SQL进行拼接,从而完成带有分页处理的SQL语句的构建。

PageHelper 是国内非常优秀的一款开源 mybatis 分页插件,它支持常用的主流数据库,例如 Oracle、Mysql、MariaDB、SQLite、Hsqldb 等。
二、PageHelper的使用
2.1、引入依赖

pom中引入依赖

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.0</version>
</dependency>

2.2、配置PageHelper(非必须)

    该步骤是非必须的,若不配置则是默认的,对正常使用影响不大。

在application.properties或application.yml中配置pagehelper相关属性,例如:

以application.yml为例:

pagehelper:helperDialect: mysql #指定数据库方言,这里以MySOL为例reasonable: true #分页合理化,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页supportMethodsArguments: true #支持通过Mapper接口参数传递分页参数params: count=countSql #用于从对象中根据属性名取值,这里配置count的SOL

这些参数的详细解释如下:

    helperDialect: 指定分页插件的数据库方言。PageHelper会自动检测当前的数据库链接,自动选择合适的分页方式。如果你使用的是MySQL,可以明确指定为mysql。
    reasonable: 是否启用分页合理化。如果启用,当pageNum<1时,会自动查询第一页的数据,当pageNum>pages时,自动查询最后一页数据;不启用的情况下,以上两种情况都会返回空数据。
    supportMethodsArguments: 是否支持通过Mapper接口参数来传递分页参数,默认值false。设置为true时,PageHelper会从查询方法的参数值中自动根据配置的字段取值,进行分页。 (具体使用见下方源码讲解)
    params: 用于从对象中根据属性名取值,可以配置pageNum, pageSize, count, pageSizeZero, reasonable等参数。这里的count=countSql表示在执行分页查询时,会使用countSql作为计算总数的SQL。

2.3、使用

PageHelper 的使用也非常简单,只需要在查询之前调用PageHelper.startPage() 方法即可开始分页。例如:

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public PageInfo<User> listUser(UserQo qo) {// 设置分页参数PageHelper.startPage(qo.getPageNo(),qo.getPageSize());//查询数据List<User> result = userMapper.listByCondition(qo);// 使用PageInfo对查询结果进行封装,返回包含分页信息的对象return new PageInfo<>(result);}
}

 

UserMapper.xml文件

<mapper namespace="com.demo.mapper.UserMapper"><select id="listByCondition" resultType="com.demo.entity.User">select *  from userwhere 1=1<if test="name!= null and name!= '' ">name = #{name}</if>order by id</select>
</mapper>

 

PageHelper 的核心方法是 PageHelper.startPage(),它的作用是为当前线程开启分页上下文,并在接下来的查询中拦截 SQL,添加分页参数。
执行流程:

    PageHelper.startPage() 开启分页上下文,并设置分页参数。
    查询方法 userMapper.listByConfition(qo) 被拦截,PageHelper 在 SQL 后自动添加 LIMIT。
    查询返回结果后,使用 PageInfo 封装结果,同时计算总记录数、分页信息等。

相关新闻

  • MathType7 功能分析
  • 低版本 Linux【16.04】如何安装 claude code
  • 什么,以太网能传CAN报文?

最新新闻

  • 2026年淮南职业技术学校招生报名全攻略:42个专业任你选,总有一个适合你 - 我叫小周
  • 上海本地地下室防水施工公司权威口碑排名参考 - 热点速览
  • Microchip嵌入式开发资源全攻略:从官方文档到社区实战
  • 临汾装修避坑指南:2026年整装模式如何选?5大品牌实测对比 - 精选优质企业推荐官
  • 从SQL注入到连接泄漏:WinForms ADO.NET的5个致命误区
  • 成都黄金回收服务评级 2026:计价透明、无隐形扣费优质商家独推 - 奢侈品回收评测

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号