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

MyBatis 的分页插件 c

前言

大型项目的数据体量很大,在前端界面展示时为保障展示效果,会要求接口快速返回,这时候后端会选择分页获取数据,只传递要查询的页码数据。这就避免了大多问题,达到快速返回的效果。

常用的分页有2种:

①  MyBatis 分页插件:PageHelper。这个插件很常用,支持多数据库分页,无需修改SQL语句即可实现分页功能。

注意:这个插件的功能相当于在你代码中的第一个 SQL 语句的后面加上 LIMIT [offset], [limit] 子句,例如 LIMIT 20, 10 ,表示从21条记录开始,获取10条记录。
这个插件 只会在你的第一条语句后面添加子句 ,如果代码后面还存在其他的 SQL 则会不生效。
如果你使用这个插件获取 UserId 列表,并用该列表进行后续操作,要注意返回的 顺序问题 。

②  PageInfo 类:这是手动分页,适合数据量小的情况,因为需要预先加载所有数据,例如预先加载所有 UserId ,对 UserId 进行划分数量,根据请求的分页参数查询处在不同数量位置的 UserId 。

本文只介绍分页插件 PageHelper ,包括使用的依赖,创建方式,代码示例和验证结果展示等。

分页插件 PageHelper 的依赖导入方式

1. 使用pagehelper 包

添加pagehelper插件的依赖,并还需要定义一个 config 文件。

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.1.3</version>
</dependency>
package com.wen.config;import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;@Configuration
public class MyBatisConfig {// 设置相关的参数信息,下面有对参数的详细解释@Beanpublic PageHelper pageHelper() {PageHelper pageHelper = new PageHelper();Properties properties = new Properties();properties.setProperty("dialect", "Mysql");properties.setProperty("offsetAsPageNum", "true");properties.setProperty("rowBoundsWithCount", "true");pageHelper.setProperties(properties);return pageHelper;}
}// Properties 中需设置的属性值:解释
// 1.  "dialect", "Mysql":不同数据库的SQL语句不同,这里指定了数据库语言为Mysql
// 2.  "offsetAsPageNum", "true":这个属性通常用于指定是否将传入的 offset 参数当作 pageNum 页码使用。
// ① 设置为 true,意味着如果分页查询时传递了offset偏移量,PageHelper会将其视为页码来处理。
// ② 非必需,因为 PageHelper 默认就是使用页码 pageNum 和每页记录数 pageSize 来进行分页的。
// 3.  "rowBoundsWithCount", "true":该属性用于指定是否进行 count 查询以获取总记录数。
// 在分页查询时,需要知道总记录数,它可以让你在前端展示总页数或总记录数。
// 设置为 true 表示 PageHelper 在执行分页查询时,会先执行一个 count 查询来获取总记录数。

http://www.xdnf.cn/news/472015.html

相关文章:

  • 国产芯片LH001-91为什么可以代替TI的ADS1291?
  • 观QFramework框架底层逻辑有感
  • 丝杆升降机限位失灵深度剖析:从故障机理到智能监测方案
  • 硬件创新新纪元:从算力怪兽到便携革命,2025 年如何重新定义计算体验
  • unordered_set和unordered_map
  • 详细解释api
  • 不同进制的数据展示(十进制、十六进制、编码方式)
  • 理解 Viewport:让网页在手机端正确显示的秘诀
  • 星形测试卡:射线摄影获取焦点星卡射线照片的工具
  • win11安装Joplin Server私有化部署(docker)
  • 【应急响应工具教程】Windows日志快速分析工具——Chainsaw
  • 数智管理学(九)
  • MySQL 8.0 OCP 1Z0-908 题目解析(4)
  • Process exited with an error: 1 (Exit value: 1) 问题处理
  • Element Plus 取消el-form-item点击触发组件,改为原生表单控件
  • Seata源码—3.全局事务注解扫描器的初始化一
  • 5月15日day26打卡
  • 计量经济学——预测与chow检验
  • 以项目的方式学QT开发(三)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!
  • C++ QT图片查看器
  • 软件设计师考试《综合知识》软件过程模型考点分析——求三连
  • 044-代码味道-数据类
  • 【YOLO 系列】基于YOLO的道路坑洞检测识别系统【python源码+Pyqt5界面+数据集+训练代码】
  • SWMM相关文档共享
  • BUUCTF——shrine
  • 牛客网 NC22167: 多组数据a+b
  • 差分振荡器:支持0.15ps超低抖动的高速时钟核心
  • 腾讯AI军备极速扩张
  • LCD电视LED背光全解析:直下式 vs 侧光式、全局调光 vs 局部调光与HDR体验
  • (6)python开发经验