MyBatis 怎么配置分页插件 PageHelper 实现物理分页

轻墨姑娘_6254

轻墨姑娘_6254

2026-08-07

726人浏览

原创

mybatis 配置 pagehelper 实现物理分页,核心是插件在 sql 执行前自动重写语句并添加 limit 等原生分页语法;需引入 pagehelper-spring-boot-starter(spring boot)或 pagehelper(传统项目),版本 5.3.0+;必须显式配置 helper-dialect;分页调用仅对紧随其后的第一个查询生效;结果封装推荐使用 pageinfo 获取总条数、页码、导航数组等完整分页信息。

mybatis 怎么配置分页插件 pagehelper 实现物理分页

MyBatis 配置 PageHelper 实现物理分页,核心是让插件在 SQL 执行前自动重写语句,加上 LIMIT(MySQL)、ROWNUM(Oracle)等原生分页语法,真正只查当前页数据,不加载全表。

引入正确依赖

推荐使用 pagehelper-spring-boot-starter(Spring Boot 项目)或 pagehelper(传统 MyBatis 项目),版本建议 5.3.0+:

  • Spring Boot 项目(推荐):
    <dependency><br>
            <groupid>com.github.pagehelper</groupid><br>
            <artifactid>pagehelper-spring-boot-starter</artifactid><br>
            <version>5.3.3</version><br></dependency>
  • 非 Spring Boot 项目:
    <dependency><br>
            <groupid>com.github.pagehelper</groupid><br>
            <artifactid>pagehelper</artifactid><br>
            <version>5.3.3</version><br></dependency>

指定数据库方言并启用关键参数

必须显式配置 helper-dialect,避免运行时自动探测带来的性能损耗;其他参数按需开启:

Alibabacloud Sdk Client Initialization For Java
Alibabacloud Sdk Client Initialization For Java

在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。

下载
  • Spring Boot(application.yml):
    pagehelper:<br>
            helper-dialect: mysql<br>
            reasonable: true<br>
            support-methods-arguments: true<br>
            params: count=countSql
  • 非 Spring Boot(mybatis-config.xml):
    <plugins></plugins> 标签下配置:
    <plugin interceptor="com.github.pagehelper.PageInterceptor"><br>
            <property name="helperDialect" value="mysql"></property><br>
            <property name="reasonable" value="true"></property><br>
            <property name="supportMethodsArguments" value="true"></property><br></plugin>

调用方式要精准

PageHelper 的分页拦截只对紧随其后的第一个查询生效,调用位置很关键:

  • 正确写法(推荐):
    PageHelper.startPage(2, 15);<br>
        List<user> users = userMapper.selectAll();</user>
  • 支持链式排序:
    PageHelper.startPage(1, 20).setOrderBy("create_time DESC");
  • 跳过 COUNT 查询(如无限滚动):
    PageHelper.startPage(1, 20, false); // 第三个参数为 false
  • 避免在 startPage() 和 Mapper 查询之间插入其他 DB 操作、事务控制或日志打印

封装结果用 PageInfo

PageInfo 不是简单包装 List,它把总记录数、页码、导航数组等一次性带回:

  • PageInfo<user> pageInfo = new PageInfo(users);</user>
  • 常用字段:
    pageInfo.getTotal() → 总条数(来自自动触发的 COUNT 查询)
    pageInfo.getPages() → 总页数
    pageInfo.isFirstPage() / pageInfo.isLastPage() → 边界判断
    pageInfo.getNavigatepageNums() → 返回 [1,2,3,4,5] 这类导航页码数组
  • pageInfo.getList() 就是当前页数据,无需再 subList

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

java

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
mybatis一级缓存和二级缓存
mybatis一级缓存和二级缓存

在MyBatis中,一级缓存和二级缓存是两种不同级别的缓存机制,它们都可以用来提高性能。本专题提供mybatis一级缓存和二级缓存相关文章,大家可以免费阅读。

2023.08.21

563

4

ibatis和mybatis有什么区别
ibatis和mybatis有什么区别

ibatis和mybatis的区别:1、基本信息不同;2、开发时间不同;3、功能与易用性;4、配置文件;5、入参类型与出参类型;6、返回结果集接受方式;7、语法差异;8、数据库方言支持;9、插件支持;10、社区活跃度;11、全球化支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

1922

5

mybatis如何配置数据库连接
mybatis如何配置数据库连接

mybatis配置数据库连接的方法:1、指定数据源;2、配置事务管理器;3、配置类型处理器和映射器;4、使用环境元素;5、配置别名。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

446

5

mybatis工作原理及流程是什么
mybatis工作原理及流程是什么

mybatis工作原理及流程:1、配置文件;2、接口与映射;3、sql解析与生成;4、执行计划;5、结果处理;6、动态sql;7、缓存机制;8、插件;9、事务管理;10、日志与监控;11、扩展性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

272

4

hibernate和mybatis有哪些区别
hibernate和mybatis有哪些区别

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

302

5

Java MyBatis框架
Java MyBatis框架

本专题专注于Java主流ORM框架MyBatis的应用,系统讲解SQL映射、动态SQL、结果映射、分页查询、缓存机制与多表关联等核心内容,并结合企业管理系统、电商平台和后台管理项目实战,帮助学员全面掌握高效的数据库持久层开发技能。

2025.08.26

4929

22

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

2026.09.21

0

20

NumPy随机数文件读写与dtype数据类型
NumPy随机数文件读写与dtype数据类型

本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。

2026.09.21

0

24

NumPy矩阵运算与线性代数计算
NumPy矩阵运算与线性代数计算

本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。

2026.09.21

0

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习