在 RuoYi 中集成
MyBatis-Plus
可以极大地简化代码生成的过程,提高开发效率。本文将介绍如何一步步在 RuoYi 项目中配置和使用 MyBatis-Plus 实现代码生成。
首先,需要在项目中引入 MyBatis-Plus 的依赖。在项目根目录下的 pom.xml
文件中添加以下内容:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
同时,在 ruoyi-common
模块的 pom.xml
文件中添加 MyBatis-Plus 的依赖:
<dependencies>
<!-- MyBatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
</dependencies>
在 RuoYi 项目中为 MyBatis-Plus 配置基础环境。首先,定位到 ruoyi-framework
模块下的 config
文件夹,打开 MyBatisConfig.java
,并对其进行如下修改:
@Configuration
public class MyBatisConfig {
@Autowired
private Environment env;
static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
public static String setTypeAliasesPackage(String typeAliasesPackage) {
// 配置扫描包路径逻辑
}
public Resource[] resolveMapperLocations(String[] mapperLocations) {
// 配置 Mapper 文件位置逻辑
}
}
通过注释或删除掉原始 SqlSessionFactory
配置部分,确保与 MyBatis-Plus 配置兼容。
application.yml
在 ruoyi-admin
模块下找到 application.yml
文件,对 MyBatis-Plus 的配置进行调整,将 MyBatis 配置注释掉,并添加 MyBatis-Plus 配置:
# MyBatis 配置(已注释)
# mybatis:
# typeAliasesPackage: com.ruoyi.**.domain
# mapperLocations: classpath*:mapper/**/*Mapper.xml
# configLocation: classpath:mybatis/mybatis-config.xml
# MyBatis-Plus 配置
mybatis-plus:
mapper-locations: classpath*:mapper/**/*Mapper.xml
type-aliases-package: com.ruoyi.**.domain
configuration:
cache-enabled: true
use-generated-keys: true
default-executor-type: simple
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
domain.java.vm
在 domain.java.vm
模板中引入 @TableName
注解,用于指定表名称:
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("${tableName}")
mapper.java.vm
在 mapper.java.vm
文件中,继承 MyBatis-Plus 的 BaseMapper
,简化 Mapper 层代码:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface {ClassName}Mapper extends BaseMapper<{ClassName}> {
}
service.java.vm
在 service.java.vm
中继承 IService
,简化 Service 层接口的开发:
import com.baomidou.mybatisplus.extension.service.IService;
public interface I{ClassName}Service extends IService<{ClassName}> {
}
serviceImpl.java.vm
在 serviceImpl.java.vm
中继承 ServiceImpl
,减少对 CRUD
操作的重复定义:
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
public class {ClassName}ServiceImpl extends ServiceImpl<{ClassName}Mapper, {ClassName}> implements I{ClassName}Service {
}
generator.yml
在代码生成器配置文件 generator.yml
中,将 tablePrefix
前缀配置为 true
,自动去除表前缀,类名更加符合 Java 命名规范。
tablePrefix: sys_ # 表前缀设置,生成类名时会省略此前缀
packageName: com.ruoyi.system # 代码生成的基础包路径
为了实现分页功能,需要在 ruoyi-framework
模块中新建 MybatisPlusConfig.java
文件,配置分页插件:
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.*.*.mapper") // 指定扫描目录
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 根据数据库类型选择
return interceptor;
}
}
以 SysConfig
为例,完成代码生成所需的必要改造。
SysConfig.java
在 ruoyi-system
模块的 domain
包下找到 SysConfig.java
,添加 @TableName
注解,指定数据库表名称:
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("sys_config")
public class SysConfig {
// 其他属性和方法
}
SysConfigMapper.java
在 mapper
包中的 SysConfigMapper.java
中,让其继承 BaseMapper
接口:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface SysConfigMapper extends BaseMapper<SysConfig> {
}
ISysConfigService.java
在 service
包中的 ISysConfigService.java
中继承 IService
接口:
import com.baomidou.mybatisplus.extension.service.IService;
public interface ISysConfigService extends IService<SysConfig> {
}
SysConfigServiceImpl.java
在 service.impl
包中的 SysConfigServiceImpl.java
中继承 ServiceImpl
,将 Service 实现类与 Mapper 和实体类结合:
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements ISysConfigService {
}
完成以上配置后,RuoYi 项目已成功实现使用 MyBatis-Plus 进行代码自动生成功能,大大减少了手动编码的繁琐操作。
powered by kaifamiao