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.获取分页结果:执行查询后,你可以直接从返回的结果中获取分页信息,比如总记录数、当前页数据等。

4.具体使用

4.1 后端部分

4.1.1 pom.xml引入依赖

1
2
3
4
5
6
7
8
9
10
11
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
  • pom.xml内容:

image-20250424161740289

4.1.2 Controller层

image-20250424161824665

4.1.3 Service层

image-20250424162006499

4.1.4 Mapper层

image-20250424162029958

4.1.5 测试

  • 默认情况【因为controller层写了defaultValue值】:

image-20250424162110539

  • 自定义参数:

image-20250424162152717

4.2 前端部分

  • 定义tableData接受数据,pageNum是当前页,pageSize是每页个数,name是根据名称搜索【也可以根据别的,对应调整后端接口和sql语句】,total记录总个数
  • load函数就是根据定义的参数调用分页查询,将查询结果放入tableData,将total记录下来
  • el-pagination是vue3涉及的element-plus的分页组件,接受一些分页参数

image-20250425172930814

×

纯属好玩

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

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

文章目录
  1. 1. 0.前提
  2. 2. 1.定义
  3. 3. 2.分页原理
    1. 3.1. 2.1 拦截器–Sql守门人
    2. 3.2. 2.2 分页SQL的生成
  4. 4. 3.使用操作
  5. 5. 4.具体使用
    1. 5.1. 4.1 后端部分
      1. 5.1.1. 4.1.1 pom.xml引入依赖
      2. 5.1.2. 4.1.2 Controller层
      3. 5.1.3. 4.1.3 Service层
      4. 5.1.4. 4.1.4 Mapper层
      5. 5.1.5. 4.1.5 测试
    2. 5.2. 4.2 前端部分
,