当前位置: 首页 > 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 查询来获取总记录数。

相关文章:

  • 交通运输与能源融合发展——光储充在交通上的应用完整解决方案
  • 【hadoop】sqoop案例 hive->mysql
  • python克洛伊婚纱摄影预约管理系统
  • 纯前端实现基于位置的天气和动态背景图片
  • 【优化算法】协方差矩阵自适应进化策略(Covariance Matrix Adaptation Evolution Strategy,CMA-ES)
  • [项目深挖]仿muduo库的并发服务器的解析与优化方案
  • 解决ubuntu20中tracker占用过多cpu,引起的风扇狂转
  • 人体肢体工作识别-一步几个脚印从头设计数字生命——仙盟创梦IDE
  • MySQL读写分离
  • 【CF】Day59——Codeforces Round 914 (Div. 2) D
  • JS手写代码篇---手写 Object.create
  • 【生活相关-日语-日本-东京-搬家后-引越(ひっこし)(3)-踩坑点:国民健康保险】
  • Xinference推理框架
  • Redis(2):Redis + Lua为什么可以实现原子性
  • Spark--RDD中的转换算子
  • 【hadoop】Kafka 安装部署
  • VSTO(C#)Excel开发进阶2:操作图片 改变大小 滚动到可视区
  • 安卓A15系统实现修改锁屏界面默认壁纸功能
  • Excel在每行下面插入数量不等的空行
  • React Native简介
  • 工商银行杭州金融研修院原院长蒋伟被“双开”
  • 风雨天涯梦——《袁保龄公牍》发微
  • 重庆市委原常委、政法委原书记陆克华被决定逮捕
  • 中巡组在行动丨①震慑:这些地区有官员落马
  • 法治课|争议中的“行人安全距离”于法无据,考量“注意义务”才更合理
  • 生态环境保护督察工作条例对督察对象和内容作了哪些规定?有关负责人答问