当前位置: 首页 > news >正文

PageHelper

一、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 封装结果,同时计算总记录数、分页信息等。

http://www.hskmm.com/?act=detail&tid=95

相关文章:

  • MathType7 功能分析
  • 低版本 Linux【16.04】如何安装 claude code
  • Redis数据持久化方案与集群部署
  • 什么,以太网能传CAN报文?
  • 物业管理小程序系统介绍
  • 阿里云文件上传oss存储
  • 快照同步思想
  • Windows-系统自动切换IPv4地址
  • 目录导航
  • sql嵌套查询
  • archlinux gnome48 顶部托盘选择
  • AT_agc014_f [AGC014F] Strange Sorting
  • JS常用函数
  • 第8章 STM32CUBE LCD配置和测试
  • git ssh key配置
  • Git的使用方法
  • 一个充气泵方案的主控芯片SIC8833
  • 83、快速制作身份证小方格
  • 微算法科技(NASDAQ: MLGO)采用量子相位估计(QPE)方法,增强量子神经网络训练
  • 数据库的逻辑外键与数据库的物理外键
  • 智能充气泵PCBA方案
  • DeepSeek文案短句:点燃创意火花
  • 如何通过Python SDK 统计Collection
  • 数字设计中的多级同步器(multi-stage synchronizer)
  • 小程序web-view全覆盖问题
  • conda安装虚拟环境或者包时候都一个常见问题--HTTP 000 CONNECTION FAILED(2)
  • debian11 nuitka 打包python3 脚本
  • C++容器内存安全实战:ASan注解逐步指南
  • iOS系统与Windows系统有什么区别?
  • qemu的外部快照原理