PageHelper

0.前提

在开发Web应用时,我们经常需要处理大量的数据展示,而分页功能几乎成了标配。它不仅提升了用户体验,还减轻了服务器的负担。今天,咱们就来聊聊一个在Java圈里非常流行的分页插件——PageHelper,看看它是如何在不动声色间帮我们搞定分页难题的。

1.定义

PageHelper是MyBatis的一个分页插件,它能够在不修改原有查询语句的基础上,自动实现分页功能。
简单来说,就是你在查询数据库时,告诉PageHelper你想看第几页、每页多少条数据,它就会帮你把结果集“裁剪”好。

2.分页原理

  • 主要依赖于两个核心步骤:拦截器分页SQL的生成

2.1 拦截器–Sql守门人

它首先会作为一个拦截器注册到MyBatis的执行流程中。这个拦截器就像是个守门人,会在SQL语句执行前和执行后进行一些“小动作”。

  • 执行前:当你发起一个查询请求时,PageHelper会检查当前线程是否已经设置了分页参数(比如页码、每页数量)。如果设置了,它就会根据这些参数计算出需要跳过的记录数和要查询的记录数。
  • 执行后:查询完成后,PageHelper还会对结果进行二次加工,比如封装成分页对象,包含总记录数、当前页的数据列表等信息。

2.2 分页SQL的生成

拦截到SQL语句后,PageHelper并不会直接修改你的原始SQL,而是通过动态生成一段分页SQL来实现分页功能。这个过程大致如下:

  • 计算分页参数:根据你提供的页码和每页数量,计算出起始位置和结束位置。
  • 拼接分页SQL:在原始SQL的基础上,添加LIMITOFFSET(或者数据库特定的分页语法,比如MySQL的LIMIT,Oracle的ROWNUM等),从而实现对结果集的裁剪。【如果要查询第20-30行数据。 limit 19,10 或者 limit 10 offset 19】
  • 执行分页SQL:最终,这个经过“加工”的SQL会被提交给数据库执行,返回的就是你想要的那一页数据了。

3.使用操作

具体操作网页:如何使用分页插件

  • 1.引入依赖:在你的项目中添加PageHelper的依赖,无论是Maven还是Gradle,都有现成的配置。

image-20241116115450030

  • 2.配置PageHelper:在MyBatis配置文件中简单配置一下PageHelper插件。
  • 3.代码中分页:在需要分页的查询方法前,调用PageHelper.startPage(pageNum, pageSize),其中pageNum是页码,pageSize是每页数量。
  • 4.获取分页结果:执行查询后,你可以直接从返回的结果中获取分页信息,比如总记录数、当前页数据等。

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 0.前提
  2. 2. 1.定义
  3. 3. 2.分页原理
    1. 3.1. 2.1 拦截器–Sql守门人
    2. 3.2. 2.2 分页SQL的生成
  4. 4. 3.使用操作
,