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

MyBatis-Plus的分页插件

MyBatis-Plus分页插件

如果MyBatisPlus的版本是3.5.9以上的,那么需要引入下面的jsqlparser依赖,否则只需要MyBatis-Plus的插件即可

<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-jsqlparser -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-jsqlparser</artifactId><version>3.5.14</version>
</dependency>

MyBatis-Plus要实现分页查询需要指定两个参数:

  1. 当前页码
  2. 每一页的条目个数

在查询前需要先创建一个Page类对象,将上面两个参数传入构造函数中。接着再调用selectPage方法传入创建好的Page类对象

但是selectPage默认是需要传递两个参数的,如果是无条件查询,那么第二个参数传递null即可

创建测试类如下:

@SpringBootTest
public class MybatisPlusPageApplicationTests {@Autowiredprivate BookInfoMapper bookInfoMapper;@Testpublic void test() {Page<BookInfo> page = new Page<>(3, 10);// 无条件查询Page<BookInfo> result = bookInfoMapper.selectPage(page, null);// 打印分页信息(调试用)System.out.println("当前页: " + result.getCurrent());System.out.println("每页大小: " + result.getSize());System.out.println("总记录数: " + result.getTotal());System.out.println("总页数: " + result.getPages());System.out.println("数据列表: " + result.getRecords());}
}

可以看到输出结果如下:

当前页: 1
每页大小: 10
总记录数: 27
总页数: 3
数据列表: [
BookInfo(id=1, bookName=活着, author=余华, count=29, price=22.00, publish=北京文艺出版社, status=1, createTime=Sun Sep 14 19:38:41 CST 2025, updateTime=Mon Sep 15 19:50:52 CST 2025), 
BookInfo(id=2, bookName=平凡的世界, author=路遥, count=5, price=98.56, publish=北京十月文艺出版社, status=1, createTime=Sun Sep 14 19:38:41 CST 2025, updateTime=Mon Sep 15 19:52:02 CST 2025), 
BookInfo(id=3, bookName=三体, author=刘慈欣, count=9, price=102.67, publish=重庆出版社, status=1, createTime=Sun Sep 14 19:38:41 CST 2025, updateTime=Mon Sep 15 19:52:09 CST 2025), 
BookInfo(id=4, bookName=金字塔原理, author=麦肯锡, count=16, price=178.00, publish=民主与建设出版社, status=1, createTime=Sun Sep 14 19:38:41 CST 2025, updateTime=Mon Sep 15 19:54:32 CST 2025), 
BookInfo(id=5, bookName=云边有个小卖部, author=张嘉佳, count=1, price=54.00, publish=湖南文艺出版社, status=1, createTime=Sun Sep 14 21:35:55 CST 2025, updateTime=Sun Sep 14 21:41:07 CST 2025), 
BookInfo(id=6, bookName=被讨厌的勇气:“自我启发之父”阿德勒的哲学课, author=岸见一郎, count=1, price=58.00, publish=机械工业出版社, status=1, createTime=Mon Sep 15 18:15:04 CST 2025, updateTime=Mon Sep 15 18:15:04 CST 2025), 
BookInfo(id=7, bookName=流浪地球, author=刘慈欣, count=1, price=87.00, publish=四川科学技术出版社, status=1, createTime=Mon Sep 15 18:16:33 CST 2025, updateTime=Mon Sep 15 19:55:21 CST 2025), 
BookInfo(id=8, bookName=图书2, author=作者2, count=29, price=22.00, publish=出版社2, status=1, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Mon Sep 15 21:26:39 CST 2025), 
BookInfo(id=9, bookName=图书3, author=作者2, count=29, price=22.00, publish=出版社 3, status=0, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Sat Sep 20 17:38:50 CST 2025), 
BookInfo(id=10, bookName=图书4, author=作者2, count=29, price=22.00, publish=出版社1, status=0, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Sat Sep 20 14:50:07 CST 2025)
]

如果传递的当前页参数为2,那么就是从第11条开始到第20条数据,可以得到下面的结果:

当前页: 2
每页大小: 10
总记录数: 27
总页数: 3
数据列表: [
BookInfo(id=11, bookName=图书5, author=作者2, count=29, price=22.00, publish=出版社1, status=1, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Mon Oct 20 12:29:11 CST 2025), 
BookInfo(id=12, bookName=图书6, author=作者2, count=29, price=22.00, publish=出版社1, status=1, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Mon Sep 15 21:26:39 CST 2025), 
BookInfo(id=13, bookName=图书7, author=作者2, count=29, price=22.00, publish=出版社1, status=1, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Mon Oct 20 12:29:13 CST 2025), 
BookInfo(id=14, bookName=图书8, author=作者2, count=29, price=22.00, publish=出版社1, status=1, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Mon Sep 15 21:26:39 CST 2025), 
BookInfo(id=15, bookName=图书9, author=作者2, count=29, price=22.00, publish=出版社1, status=1, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Mon Oct 20 12:29:16 CST 2025), 
BookInfo(id=16, bookName=图书10, author=作者2, count=29, price=22.00, publish=出版社1, status=1, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Mon Sep 15 21:26:39 CST 2025), 
BookInfo(id=17, bookName=图书11, author=作者2, count=29, price=22.00, publish=出版社1, status=0, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Mon Oct 20 12:29:20 CST 2025), 
BookInfo(id=18, bookName=图书12, author=作者2, count=29, price=22.00, publish=出版社1, status=0, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Sat Sep 20 14:52:12 CST 2025), 
BookInfo(id=19, bookName=图书13, author=作者2, count=29, price=22.00, publish=出版社1, status=0, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Mon Oct 20 12:29:24 CST 2025), 
BookInfo(id=20, bookName=图书14, author=作者2, count=29, price=22.00, publish=出版社1, status=1, createTime=Mon Sep 15 21:26:39 CST 2025, updateTime=Mon Sep 15 21:26:39 CST 2025)
]

根据官方文档的描述,Page类介绍如下:

Page 类继承了 IPage 类,实现了简单分页模型。如果你需要实现自己的分页模型,可以继承 Page 类或实现 IPage 类。Page类中有以下的属性:

属性名类型默认值描述
recordsList<T>emptyList查询数据列表
totalLong0查询列表总记录数
sizeLong10每页显示条数,默认 10
currentLong1当前页
ordersList<OrderItem>emptyList排序字段信息
optimizeCountSqlbooleantrue自动优化 COUNT SQL
optimizeJoinOfCountSqlbooleantrue自动优化 COUNT SQL 是否把 join 查询部分移除
searchCountbooleantrue是否进行 count 查询
maxLimitLong单页分页条数限制
countIdStringXML 自定义 count 查询的 statementId

如果想根据具体条件查询,则可以使用MyBatis-Plus的条件构造器,例如根据出版社名称不为“出版社1”的结果进行分页查询,每页三条,则可以写为:

@Testpublic void test1() {Page<BookInfo> page = new Page<>(1, 3);// 构建出版社名称不为“出版社1”的条件构造器LambdaQueryWrapper<BookInfo> publisher = new LambdaQueryWrapper<BookInfo>().ne(BookInfo::getPublish, "出版社1");// 无条件查询Page<BookInfo> result = bookInfoMapper.selectPage(page, publisher);// 打印分页信息(调试用)System.out.println("当前页: " + result.getCurrent());System.out.println("每页大小: " + result.getSize());System.out.println("总记录数: " + result.getTotal());System.out.println("总页数: " + result.getPages());System.out.println("数据列表: " + result.getRecords());}

输出结果如下:

当前页: 1
每页大小: 3
总记录数: 9
总页数: 3
数据列表: [
BookInfo(id=1, bookName=活着, author=余华, count=29, price=22.00, publish=北京文艺出版社, status=1, createTime=Sun Sep 14 19:38:41 CST 2025, updateTime=Mon Sep 15 19:50:52 CST 2025), 
BookInfo(id=2, bookName=平凡的世界, author=路遥, count=5, price=98.56, publish=北京十月文艺出版社, status=1, createTime=Sun Sep 14 19:38:41 CST 2025, updateTime=Mon Sep 15 19:52:02 CST 2025), 
BookInfo(id=3, bookName=三体, author=刘慈欣, count=9, price=102.67, publish=重庆出版社, status=1, createTime=Sun Sep 14 19:38:41 CST 2025, updateTime=Mon Sep 15 19:52:09 CST 2025)
]
http://www.dtcms.com/a/507749.html

相关文章:

  • S4双向链表
  • h5模板是什么网站开发好什么进行界面的优化
  • 淘宝做短视频网站自学网页设计的网站
  • 【含文档+PPT+源码】基于SpringBoot+Vue的校园电子设备租赁系统
  • 渗透测试快速启动工具箱
  • 在 go-zero 中优雅使用 Google Wire 实现依赖注入
  • Springboot3.5.6 + jdk21使用第三方xjar加密
  • [go 面试] 构建高效微服务通信:选择合适的通信方式
  • 推荐营销型网站建设做电影资源网站手机版
  • 厦门网站设计排行网站建设培训费用多少
  • 哪个网站做图文素材多项目投资网
  • Python3编程之面向对象
  • 【AI4S】从直觉到人工智能:药物发现中的小分子表征演变
  • docker compose 2.33版本安装
  • 在线解决window和linux对linux远程问题
  • 公司企业做网站好做吗深圳市网站备案
  • rabbitmq的多交换机(扇出为例)监听实现
  • 做网站那个好做淘宝联盟网站要多少钱
  • 4A 架构(业务架构、数据架构、应用架构、技术架构)在智慧电网中的实战:从边缘 AI 到云边协同的代码级拆解
  • django 做网站wordpress使用七牛防止降权
  • 定制建站方案当当网站建设的目标
  • 阿里云创建交换分区、设置内存监控预警和自动处理内存占用过大进程的脚本
  • 网站建设费用做什么科目思明自助建站软件
  • php网站开发实战教程app和网站开发语言的区别
  • 引领未来交易:达普韦伯全链路Swap交易所系统开发解决方案
  • 2.CUDA编程模型
  • YOLOV4
  • MES系统如何实现生产过程数据采集与管控?
  • 医保局网站建设dw网页设计作品简单
  • 网站如何更换空间wordpress镜像什么意思