PageHelper:MyBatis 分页插件里的老面孔

发布时间:2026/7/11 5:35:07

PageHelper:MyBatis 分页插件里的老面孔 文章目录PageHelperMyBatis 分页插件里的老面孔1、 这玩意儿是干嘛的2、 支持哪些数据库3、 怎么集成进来4、 拦截器规范5、 适合谁用PageHelperMyBatis 分页插件里的老面孔PageHelper 在 GitHub 上已经拿到 12.3K Star 了。这个插件只干一件事让 MyBatis 的分页查询写起来不那么啰嗦。单表、多表、各种数据库方言它都帮你处理掉自己不用再拼 limit 子句、不用算 offset。1、 这玩意儿是干嘛的MyBatis 自带分页支持基本停留在 SQL 层面你想分页得自己写 limit自己算偏移量多表联查的时候还得注意子查询的顺序。PageHelper 把这些都封进拦截器里传入页码和每页大小剩下的它来。它走的是物理分页不是内存分页。区别在于物理分页是在 SQL 里加 limit数据库只返回你需要的那一页数据内存分页是全部查回来再裁剪数据量一大就直接爆掉。2、 支持哪些数据库支持的数据库覆盖面相当宽。MySQL、MariaDB、SQLite、PostgreSQL、Oracle、DB2、SQL Server、Informix、HSQLDB、H2 这些主流的都有国产数据库也照顾到了达梦、神通、人大金仓、瀚高、虚谷、行云、openGauss 都在列表里。如果用的数据库不在默认列表里可以通过dialectAlias参数配置自定义实现也能用这种方式覆盖已有的方言实现写法是用分号隔开多个键值对。3、 怎么集成进来Maven 项目在 pom.xml 里加一段依赖就行dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper/artifactIdversion最新版本/version/dependencySpring Boot 用户有专门的 starter 包叫 pagehelper-spring-boot-starter引入即用不用手动配拦截器。最低支持到 MyBatis 3.1.0 版本5 系列支持 JDK66 系列要 JDK8。在代码里用起来是这样的先调一次PageHelper.startPage(pageNum, pageSize)紧跟着的那一次查询就会被自动加上分页返回的是Page对象里面既包含当前页的数据也包含总数。4、 拦截器规范PageHelper 实现遵循一套叫 QueryInterceptor 的规范简单说就是拦截器之间的执行顺序和参数传递有约定。这么做的背景是 MyBatis 的拦截器链可以叠加几个插件一起用的时候没有规范会乱。作者把这个规范单独拎出来写在 wiki 里自己写其他拦截器的时候可以照着来。5、 适合谁用写 MyBatis 的 Java 后端开发基本都能用上尤其是后台管理系统这种分页查询密集的场景。新项目直接接老项目改造成本也不高。如果项目里已经手写了 limit 拼接的代码迁移的时候需要注意一下旧逻辑和 PageHelper 的衔接别出现双重分页。项目作者刘增辉在 MyBatis 圈子里挺活跃除了 PageHelper 还写了一本《MyBatis 从入门到精通》文档和 wiki 维护得很全提交 BUG 走 GitHub issues作者本人会回。文档地址和作者博客都能在 README 里找到。对于已经在用 MyBatis 又被分页搞得有点烦的团队这个插件是个稳妥的选择。开源时间长、维护活跃、Star 数说明用户基数够大遇到问题翻 wiki 基本能翻到答案。的选择。开源时间长、维护活跃、Star 数说明用户基数够大遇到问题翻 wiki 基本能翻到答案。

相关新闻