目录
在使用 MyBatis-Plus 进行数据库操作时,分页查询是一个非常常见的需求。MyBatis-Plus 提供了方便的分页插件来简化这一过程。本文将详细介绍如何正确配置 MyBatis-Plus 的分页插件(包括 MybatisPlusInterceptor
和 PaginationInterceptor
)。
一、pom.xml文件配置
为了使用 MyBatis-Plus 的分页插件,你需要确保在你的 Maven 项目的 pom.xml
文件中正确添加了必要的依赖:(一般情况下,只添加mybatis-plus的起步依赖mybatis-plus-boot-starter就可以)
注意:将${mybatis-plus.version}替换为你的项目的mybatis-plus的版本号,或者在pom.xml的<properties>的标签中统一管理版本信息
<!-- MyBatis-Plus Boot Starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- MyBatis-Plus Extension for PaginationInterceptor or MybatisPlusInterceptor -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
二、使用PaginationInterceptor
- 适用于 MyBatis-Plus 3.4.0 之前的版本
如果你正在使用的是 MyBatis-Plus 3.4.0 之前的版本,那么你需要使用 PaginationInterceptor,它是专门用于处理分页逻辑的拦截器,在早期版本中,作为一个单独的插件提供分页功能,在Springboot框架下的应该采用如下方式进行配置:
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* mybatis-plus配置
*/@ConfigurationpublicclassMybatisPlusConfig {
/**
* 添加分页插件
*/@Beanpublic PaginationInterceptor paginationInterceptor() {
returnnewPaginationInterceptor();
}
}
三、使用MybatisPlusInterceptor
- 适用于 MyBatis-Plus 3.4.0 之后的版本
从 MyBatis-Plus 3.4.0 版本开始,官方推荐使用 MybatisPlusInterceptor
来替代旧版本中的 PaginationInterceptor
。MybatisPlusInterceptor作为一个继集成了多种功能功能的拦截器,
支持多种插件,如分页插件、性能分析插件等,通过调用addInnerInterceptor()方法来使该拦截器具备各种功能。以下是官方文档中在SpringBoot框架下进行分页插件配置的方式
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* mybatis-plus配置
*/@ConfigurationpublicclassMybatisPlusConfig {
/**
* 添加分页插件
*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptorinterceptor=newMybatisPlusInterceptor();
// 添加分页插件, 如果配置多个插件, 切记分页最后添加
interceptor.addInnerInterceptor(newPaginationInnerInterceptor(DbType.MYSQL));
// 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbTypereturn interceptor;
}
四、两种拦截器的对比
1. PaginationInterceptor:
- 主要关注于分页功能,适用于只需要简单的分页逻辑的应用场景
2. MybatisPlusInterceptor:
- 分页插件:实现分页逻辑
- 性能分析插件:帮助监控 SQL 执行时间。
- SQL 注入防护插件:提高应用安全性。
- 多租户插件:支持多租户架构下的数据隔离。
- 乐观锁插件:简化并发控制。
五、总结及建议
如果你正在开发或维护一个基于 MyBatis-Plus 3.4.0 之前的项目,并且你的需求仅仅是分页功能,那么 PaginationInterceptor
就足够了。
对于 MyBatis-Plus 3.4.0 及之后的版本,官方推荐使用 MybatisPlusInterceptor
,因为它提供了更高的灵活性和更多的内置功能,可以根据实际需要轻松扩展应用的功能。