MyBatis-Plus
是基于MyBatis
的增强框架,它在不改变MyBatis
原生特性的基础上,提供了众多功能扩展,显著提升了开发效率。其支持的功能包括通用的CRUD
操作、多种主键策略、分页功能、性能分析和全局拦截等。接下来,我们将逐步指导如何在若依分离版中集成MyBatis-Plus
。
在 ruoyi-common/pom.xml
文件中,我们需要添加 MyBatis-Plus
的相关依赖。请在 <dependencies>
标签内加入以下代码:
<!-- MyBatis-Plus 增强 CRUD 功能 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
接下来,打开 ruoyi-admin
模块的 application.yml
文件,进行 MyBatis
的配置调整,使其适应 MyBatis-Plus
的特点。更新配置如下:
# MyBatis Plus 配置
mybatis-plus:
# 指定别名包路径
typeAliasesPackage: com.ruoyi.**.domain
# 配置 mapper 的扫描路径,确保所有 mapper.xml 映射文件都能被找到
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局配置文件
configLocation: classpath:mybatis/mybatis-config.xml
我们需要创建一个新的 MyBatis-Plus
配置类 MybatisPlusConfig.java
。在此之前,请确保删除原有的 MyBatisConfig.java
文件。新的配置类代码如下:
package com.ruoyi.framework.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* MyBatis Plus 配置类
*
* @author ruoyi
*/
@EnableTransactionManagement(proxyTargetClass = true)
@Configuration
public class MybatisPlusConfig
{
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor()
{
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页插件
interceptor.addInnerInterceptor(paginationInnerInterceptor());
// 添加乐观锁插件
interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
// 添加阻断插件
interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
return interceptor;
}
/**
* 分页插件,支持自动识别数据库类型
* 详细文档请见:https://baomidou.com/guide/interceptor-pagination.html
*/
public PaginationInnerInterceptor paginationInnerInterceptor()
{
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
// 设置数据库类型为 MySQL
paginationInnerInterceptor.setDbType(DbType.MYSQL);
// 设置每页最大限制,默认是 500 条,-1 表示不限制
paginationInnerInterceptor.setMaxLimit(-1L);
return paginationInnerInterceptor;
}
/**
* 乐观锁插件,更多信息请见:https://baomidou.com/guide/interceptor-optimistic-locker.html
*/
public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor()
{
return new OptimisticLockerInnerInterceptor();
}
/**
* 阻断插件,用于防止全表删除或更新操作
* 详情请见:https://baomidou.com/guide/interceptor-block-attack.html
*/
public BlockAttackInnerInterceptor blockAttackInnerInterceptor()
{
return new BlockAttackInnerInterceptor();
}
}
通过以上步骤,我们成功将 MyBatis-Plus
集成到若依分离版中。这一集成不仅简化了 CRUD
操作,还增强了应用的性能和安全性,使开发者能够更专注于业务逻辑的实现。
powered by kaifamiao