开发喵星球

RuoYi 使用 MyBatis-Plus 实现代码生成(388)

在 RuoYi 中集成 MyBatis-Plus 可以极大地简化代码生成的过程,提高开发效率。本文将介绍如何一步步在 RuoYi 项目中配置和使用 MyBatis-Plus 实现代码生成。

1、引入 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>

2、配置 MyBatis 环境

在 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 配置兼容。

3、调整 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

4、修改代码生成模板

4.1 修改 domain.java.vm

domain.java.vm 模板中引入 @TableName 注解,用于指定表名称:

import com.baomidou.mybatisplus.annotation.TableName;

@TableName("${tableName}")

domain.java.vm 配置示例

4.2 修改 mapper.java.vm

mapper.java.vm 文件中,继承 MyBatis-Plus 的 BaseMapper,简化 Mapper 层代码:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface {ClassName}Mapper extends BaseMapper<{ClassName}> {
}

mapper.java.vm 配置示例

4.3 修改 service.java.vm

service.java.vm 中继承 IService,简化 Service 层接口的开发:

import com.baomidou.mybatisplus.extension.service.IService;

public interface I{ClassName}Service extends IService<{ClassName}> {
}

service.java.vm 配置示例

4.4 修改 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 {
}

serviceImpl.java.vm 配置示例

4.5 配置 generator.yml

在代码生成器配置文件 generator.yml 中,将 tablePrefix 前缀配置为 true,自动去除表前缀,类名更加符合 Java 命名规范。

tablePrefix: sys_  # 表前缀设置,生成类名时会省略此前缀
packageName: com.ruoyi.system  # 代码生成的基础包路径

generator.yml 配置示例

5、配置 MyBatis-Plus 分页插件

为了实现分页功能,需要在 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;
    }
}

6、修改 SysConfig 实体类

SysConfig 为例,完成代码生成所需的必要改造。

6.1 修改 SysConfig.java

ruoyi-system 模块的 domain 包下找到 SysConfig.java,添加 @TableName 注解,指定数据库表名称:

import com.baomidou.mybatisplus.annotation.TableName;

@TableName("sys_config")
public class SysConfig {
    // 其他属性和方法
}

SysConfig.java 配置示例

6.2 修改 SysConfigMapper.java

mapper 包中的 SysConfigMapper.java 中,让其继承 BaseMapper 接口:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface SysConfigMapper extends BaseMapper<SysConfig> {
}

SysConfigMapper.java 配置示例

6.3 修改 ISysConfigService.java

service 包中的 ISysConfigService.java 中继承 IService 接口:

import com.baomidou.mybatisplus.extension.service.IService;

public interface ISysConfigService extends IService<SysConfig> {
}

ISysConfigService.java 配置示例

6.4 修改 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 {
}

SysConfigServiceImpl.java 配置示例

完成以上配置后,RuoYi 项目已成功实现使用 MyBatis-Plus 进行代码自动生成功能,大大减少了手动编码的繁琐操作。

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-11-12 14:33:06 阅读量:61
<<   >>


powered by kaifamiao