SpringBoot项目整合Mybatis-Plus的分页查询
一、引言
在基于SpringBoot框架进行Web项目的后端开发时,关于数据层通常离不开Mybatis框架,它能够通过注解或xml配置文件的方式,帮助开发者完成与数据库的交互,相较于传统的JDBC模式,提升了极大的效率。然而依然存在大量简单SQL语句需要手写的的问题,不得不浪费时间在单表的基础操作上。针对于此,Mybatis-Plus就成了不二之选,不仅兼容Mybatis的基础方法,还对简单SQL进行了封装,并提供了分页查询,公共字段自动插入,逻辑删除等进阶操作。
二、过程
1.引入相关Maven依赖
以SpringBoot:3.3.5版本为例,省略了基本依赖,分别引入JDBC和Mybatis-Plus与SpringBoot框架整合的依赖。
1 | <dependency> |
值得注意的是,当SpringBoot使用3以上版本时,artfactId应选择mybatis-plus-spring-boot3-starter,否则会出现项目无法正常启动的错误。这是因为,如选择mybatis-plus-boot-starter,其子依赖中的mybatis-spring依赖版本过低,与当前SpringBoot版本已无法适配,从而导致整个项目无法启动。
2.配置Mybatis-Plus数据源
在application.yml中进行如下配置,与整合Mybatis基本一致。
1 | datasource: |
3.创建数据库表及对应实体类
新建employee表,各列名采用下划线命名法,其中id为主键,对username添加唯一索引,并对操作用户及时间做记录。
1 | create table employee |
对应新建employee实体类,与数据库表中的列项一一对应,并使用驼峰命名法。serialVersionUID作为序列化标识符,保证对象的序列化与反序列化的正常一致。
1 | public class Employee implements Serializable { |
在application.yml开启如下配置,使得项目内实体类与数据库表进行驼峰命名与下划线命名的一一映射。
1 | mybatis-plus: |
除了配置文件以外,还可以在类名上使用@Table("${tb_name}")注解将当前实体类
4.创建MVC三层架构
新建EmployeeMapper接口,并继承BaseMapper<?>,添加@Mapper注解,由SpringBoot框架通过反向代理的方式管理其实现类。
1 |
|
新建EmployeeService接口,并继承IService<?>。
1 | public interface EmployeeService extends IService<Employee> { |
新建EmployeeMapperImpl接口,并继承ServiceImpl<?,?>,并实现EmployeeService接口,通过@Service注册为Bean由SpringBoot框架进行管理。
1 |
|
新建EmployeeMapperImpl接口,通过@RestController注册为Bean由SpringBoot框架进行管理并且能够向前端浏览器返回响应数据,使用@RequestMapping("/employee")注解配置资源访问路径。
1 |
|
5.创建Mybatis-Plus拦截器
拦截器的目的在于,当调用Mybatis-Plus的API中分页查询方法向数据源发送SQL语句时,将SQL语句进行拦截,先查询表中元组数量以确定页数,然后在查询语句末根据页号和页大小追加limit子句。
1 |
|
6.分页查询示例代码
此处模拟一个真实的分页查询业务,通过员工的姓名进行分页查询,均将查询结果按照更新时间进行倒序排列。若姓名不存在,则进行正常分页查询;若姓名存在,则通过模糊匹配,进行分页查询。
1 | public Page selectPage(Page pageInfo, String name) { |
执行page(pageInfo, queryWrapper)方法后,pageInfo对象被自动赋值,无需返回一个新的Page类对象,通过pageInfo.getRecords()即可获取查询数据结果。
三、写在最后
通过分页查询能够减小数据库执行查询语句的负担,减少数据从数据库到后端再到前端页面的响应时间。同时采用分页的数据渲染形式,能够避免页面过长,需要频繁使用滑动条来定位数据元组,保证当前页数据能够一览无遗。
- Title: SpringBoot项目整合Mybatis-Plus的分页查询
- Author: QingchenJia
- Created at : 2024-11-16 17:57:39
- Updated at : 2026-05-13 12:45:18
- Link: https://qingchenjia.github.io/2024/11/16/SpringBoot项目整合Mybatis-Plus的分页查询/
- License: This work is licensed under CC BY-NC-SA 4.0.