网站首页 > 文章精选 正文
SpringBoot 集成 MybatisPlus 系列
SpringBoot 版本:2.6.4
MybatisPlus 版本:3.5.1
- SpringBoot整合MybatisPlus
- SpringBoot整合MybatisPlus数据自动填充
- SpringBoot整合MybatisPlus实现逻辑删除
- SpringBoot整合MybatisPlus实现分页查询
- SpringBoot整合MybatisPlus支持枚举类型
- 未完待续…
分页查询是持久化框架的基础功能,Mybatis 本身也提供了分页查询,但是 Mybatis 提供的是逻辑分页,也就是先查出所有,然后在内存中进行分布,这明显不符合生产需要。所以使用 Mybatis 时通常需要自行实现拦截器,或者使用 PageHelper 之类的框架实现物理分页。
MybatisPlua 作为 Mybatis 的 Plus 版本,当然提供了物理分页功能。
准备工作
使用 MySql 数据库,设计一张 user 表,结构如下
id | name | age | |
1 | Jone | 18 | Jone@baomidou.com |
2 | Jack | 20 | Jack@baomidou.com |
3 | Tom | 28 | Tom@baomidou.com |
4 | Sandy | 21 | Sandy@baomidou.com |
5 | Billie | 24 | Billie@baomidou.com |
数据库脚本
CREATE TABLE user (
id BIGINT(20) NOT NULL COMMENT '主键',
name VARCHAR(32) NOT NULL COMMENT '姓名',
age SMALLINT(4) NOT NULL DEFAULT '0' COMMENT '年龄',
email VARCHAR(50) NOT NULL DEFAULT '' COMMENT '邮箱',
PRIMARY KEY (id)
)
数据脚本
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'Jone@baomidou.com'),
(2, 'Jack', 20, 'Jack@baomidou.com'),
(3, 'Tom', 28, 'Tom@baomidou.com'),
(4, 'Sandy', 21, 'Sandy@baomidou.com'),
(5, 'Billie', 24, 'Billie@baomidou.com');
整合 MybatisPlus 实现分页查询
MybatisPlus 提供了分页插件,只需要声明一下就可以实现物理分页
@Configuration
public class GetanJdbcAutoConfiguration {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
paginationInterceptor.setDbType(DbType.MYSQL);
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(paginationInterceptor);
return interceptor;
}
}
分页插件有四个属性:
属性名 | 类型 | 默认值 | 描述 |
overflow | boolean | false | 溢出总页数后是否进行处理(默认不处理) |
maxLimit | Long | 单页分页条数限制(默认无限制) | |
dbType | DbType | 数据库类型(根据类型获取应使用的分页方言) | |
dialect | IDialect | 方言实现类 |
支持的数据库
mysql、oracle、db2、h2、hsql、sqlite、postgresql、sqlserver、Phoenix、Gauss、clickhouse、Sybase、OceanBase、Firebird、cubrid、goldilocks、csiidb
测试
编写测试用例
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class MybatisPlusTest {
@Autowired
private UserMapper userMapper;
@Test
public void testPagination() {
// 查询第 2 页,每页 3 条记录
Page<User> page = new Page<>(2, 3);
page = userRepository.selectPage(page, null);
}
}
查看日志,可以看到执行了以下两个语句
SELECT COUNT(*) AS total FROM user
SELECT id,name,age,email FROM user LIMIT ?,?
如果只想查询列表,不需要统计总条数,可以使用 Page 构造方法的第三个参数进行设置
Page<User> page = new Page<>(2, 3, false);
总结
Page 是 MybatisPlus 默认实现的分页类,也可以自己实现分页类,只需要实现 IPage 接口就可以使用分页的功能。
最后关注一下,共同学习!
猜你喜欢
- 2025-06-09 PageHelper - 最方便的 MyBatis 分页插件
- 2025-06-09 50个Java编程技巧,免费送给大家(java编程基础知识入门)
- 2025-06-09 SpringBoot 各种分页查询方式详解(全网最全)
- 2025-06-09 SpringBatch - R&W, 我与富婆的这一年
- 2025-06-09 面试官:说说MyBatis分页插件(PageHelper)工作原理和配置过程?
- 2025-06-09 面试二:pagehelper是怎么实现分页的,
- 2025-06-09 SpringBoot集成Mybatis-Plus分页插件
- 2025-06-09 【开发技术】Mybatis中进行多表关联查询?性能是不是会变好呢?
- 2025-06-09 每天从外包系统同步百万数据,用什么方案?Java实战讲解
- 2025-06-09 MyBatis插件开发实战:手写一个分页插件
- 最近发表
-
- 面试中常被问到的Hash表,你了解吗
- JAVA面试考点:一文搞懂一致性Hash的原理和实现
- 一次性搞清楚equals和hashCode(hashcode() 与equals()区别,简单说明)
- HashMap.Key的故事:Key为什么出现Hash碰撞及冲突呢?
- hash冲突的几种解决方案对比(hash冲突的解决方式)
- 游戏王LN 无头骑士(无头骑士cv)
- Linux ln、unlink命令用法(linux link命令详解)
- n和l分不清矫正发音方法,这三步就够了
- golang引用私有gitlab项目代码(golang引入当前包下的文件)
- Instamic:录音领域中的 GoPro,让你想录就录,随心所欲
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)