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

企业培训笔记:SpringBoot+MyBatis项目中实现分页查询

文章目录

  • PageHelper 简介
  • 一,pom.xml文件添加依赖
  • 二,PetMapper中添加分页查询方法
  • 三,PetMapper.xml定义对应SQL语句
  • 四,SpringBootMyBatisApplicationTests添加测试方法
  • 五,PageHelper说明
    • (一)PageHelper.startPage(2, 3)
    • (二)调用时机
    • (三)底层原理
    • (四)与 SQL 输出的对应关系
  • 六,运行testGetPetByPage()方法


PageHelper 简介

PageHelper 是一款针对 MyBatis 框架的开源分页插件,由国内开发者开发,旨在简化 MyBatis 中分页查询的开发流程。它通过拦截 SQL 执行过程,自动对查询语句进行分页处理,无需手动编写复杂的分页 SQL,极大提升了开发效率。
在这里插入图片描述

一,pom.xml文件添加依赖

1,将下面的代码,添加到pom.xml文件中。
在这里插入图片描述

<!--pagehelper分页插件依赖-->                                    
<dependency>                                               <groupId>com.github.pagehelper</groupId>               <artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.7</version>                               
</dependency>                                              

2,刷新依赖,导入或下载到本地仓库。
在这里插入图片描述
3,如下图所示,成功导入依赖。
在这里插入图片描述

二,PetMapper中添加分页查询方法

在这里插入图片描述

// 分页查询宠物信息                     
public List<Pet> getPetByPage();

三,PetMapper.xml定义对应SQL语句

在这里插入图片描述

<!-- 分页查询宠物信息 -->                                          
<select id="getPetByPage" resultType="net.army.entity.Pet">select * from pet                                      
</select>                                                  

四,SpringBootMyBatisApplicationTests添加测试方法

在这里插入图片描述

// 测试分页查询宠物信息                                     
@Test                                             
void testGetPetByPage() {                         Page<Pet> page = PageHelper.startPage(2, 3);  List<Pet> pets = petMapper.getPetByPage();    System.out.println("总记录数:" + page.getTotal());System.out.println("总页数:" + page.getPages()); for (Pet pet : pets) {                        System.out.println(pet);                  }                                             
}                                                 

五,PageHelper说明

(一)PageHelper.startPage(2, 3)

Page<Pet> page = PageHelper.startPage(2, 3);

startPage(2, 3):

  • 参数一:表示页码(即第几页),从 1 开始计数(PageHelper 默认约定)。
  • 参数二:表示每页的记录数(即每页显示2条数据)。
  • 返回值 P a g e < P e t > Page<Pet> Page<Pet>:PageHelper 会创建一个 Page 对象,用于存储分页信息(如页码、每页大小、总记录数等),并绑定到当前线程。后续执行的 SQL 查询会自动应用分页逻辑。

(二)调用时机

必须在执行 SQL 查询前调用 startPage,否则分页无效。

PageHelper.startPage(2, 3); // 开启分页
List<Pet> petList = petMapper.selectAll(); // 执行查询,SQL 会自动添加 LIMIT

(三)底层原理

PageHelper 通过 MyBatis 拦截器 实现分页。当调用 startPage 后,它会:

  1. 拦截后续的 SQL 查询,根据页码和每页大小生成分页语句(如 MySQL 的 L I M I T ? , ? LIMIT ?, ? LIMIT?,?)。
  2. 自动执行 COUNT 查询获取总记录数(除非手动禁用)。
  3. 将分页结果封装到 Page 对象中。

(四)与 SQL 输出的对应关系

分页查询中对应的 SQL 语句为:

select * from pet LIMIT 3, 3
  • 第一个3:偏移量(OFFSET),计算方式为 (页码-1)×每页大小,即 (2-1)×3=3。
  • 第二个3:每页记录数(LIMIT)。

六,运行testGetPetByPage()方法

1,单击绿色运行按钮。
在这里插入图片描述

2,单击【Run ‘testGetPetByPage()’】。

在这里插入图片描述

3,查看控制运行结果。

在这里插入图片描述

http://www.dtcms.com/a/264678.html

相关文章:

  • GraphPrompts:图神经网络领域的提示工程范式革新者
  • 学习笔记(28):随机噪声的原理、作用及代码实现详解
  • CC - Link IE转EtherCAT:石油石化软启动器的“最佳搭子”
  • 电商项目实例:基于Python京东商品API接口数据采集
  • 跨越传统界限:ChatGPT+ENVI/Python/GEE集成实战,覆盖无人机遥感、深度学习、洪水监测、矿物识别填图、土壤含水量评估等
  • 【Web前端】优化轮播图展示(源代码)
  • MDK(Keil MDK)工具链
  • cmake find_package
  • C++ 创建动态库及两种方法调用动态库
  • DINO 浅析
  • 医学+AI教育实践!南医大探索数据挖掘人才培养,清华指导发布AI教育白皮书
  • HarmonyOS应用开发高级认证知识点梳理 (四)状态管理V2应用级状态
  • AutoGen-AgentChat-1-整体了解
  • NestJS 系列教程(一):认识 NestJS 与项目初始化
  • RabbitMQ 高级特性之持久性
  • OpenCV仿射变换详解
  • 【飞算JavaAI】智能开发助手赋能Java领域,飞算JavaAI全方位解析
  • 红海云签约东莞科创金融集团,科创金融行业人力资源数字化
  • 论文阅读笔记——VGGT: Visual Geometry Grounded Transformer
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ButtonRippleEffect(按钮涟漪效果)
  • 基于[coze][dify]搭建一个智能体工作流,使用第三方插件抓取热门视频数据,自动存入在线表格
  • Node.js-http模块
  • mac Maven配置报错The JAVA_HOME environment variable is not defined correctly的解决方法
  • 21、企业行政办公(OA)数字化转型:系统如何重塑企业高效运营新范式
  • Android Native 之 inputflinger进程分析
  • 硬件选型与组网规划S7-300以太网模块适配性与网络架构搭建
  • 学习笔记(27):线性回归基础与实战:从原理到应用的简易入门
  • 利器:NPM和YARN及其他
  • 楚存科技SD NAND贴片式T卡—高性能存储解决方案、赋能AI智能硬件
  • 《Jaccard距离》算法:集合差异性度量的核心工具