Ruoyi项目MyBatis升级MyBatis-Plus指南

ruoyi 项目 mybatis 升级到 mybatis-plus
    • [1、ruoyi-common\pom.xml 模块添加整合依赖](#1、ruoyi-common\pom.xml 模块添加整合依赖)
    • [2、ruoyi-admin 文件 application.yml,修改 mybatis 配置为 mybatis-plus](#2、ruoyi-admin 文件 application.yml,修改 mybatis 配置为 mybatis-plus)
    • [3、添加 Mybatis Plus 配置 MybatisPlusConfig.java](#3、添加 Mybatis Plus 配置 MybatisPlusConfig.java)
    • 4、升级后需要修改的地方
      • [4.1 service 接口修改](#4.1 service 接口修改)
      • [4.2 service 实现修改](#4.2 service 实现修改)
      • [4.3 mapper 修改](#4.3 mapper 修改)

1、ruoyi-common\pom.xml 模块添加整合依赖

复制代码
<!-- mybatis-plus 增强CRUD -->
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.4.2</version>
</dependency>

2、ruoyi-admin 文件 application.yml,修改 mybatis 配置为 mybatis-plus

把之前的 mybatis 的相关配置给删除掉,使用这个配置代替

复制代码
# MyBatis Plus配置
mybatis-plus:
  # 搜索指定包别名
  typeAliasesPackage: com.ruoyi.**.domain
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  # 加载全局的配置文件
  configLocation: classpath:mybatis/mybatis-config.xml

3、添加 Mybatis Plus 配置 MybatisPlusConfig.java

原来的 MyBatisConfig.java 需要删除掉,这里是 ruoyi 的包名,如果项目包名修改了,请修改成自己对应的包名,到这里基本上就升级成功了

复制代码
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();
    }
}

4、升级后需要修改的地方

之前的代码不需要动,如果想使用 mybatis-plus 的话,可能和之前调用有些不一样,这里做下提示

4.1 service 接口修改

这里继承了 IService 接口,并且把对应的实体传参进来了

复制代码
public interface IPreplanService {
修改成
public interface IPreplanService extends IService<BizPreplan> {
4.2 service 实现修改

这里多了一个继承 ServiceImpl<BizPreplanMapper, BizPreplan>,把 mapper 层给拉进来了,这里 idea 会飘红,不要怕,把 mapper 层也改下就好了

复制代码
public class PreplanServiceImpl implements IPreplanService {
修改成
public class PreplanServiceImpl extends ServiceImpl<BizPreplanMapper, BizPreplan> implements IPreplanService {
4.3 mapper 修改

这里也是多了个继承,对应的 xml sql 语句不变

复制代码
public interface BizPreplanMapper {
修改成
public interface BizPreplanMapper extends BaseMapper<BizPreplan>{
相关推荐
LHICOD5 分钟前
Linux-2
java·linux·后端·jar·vmware·svm·vm
香蕉大香蕉(06敬畏市场)6 分钟前
MySQL 单点详解(03)
java·数据库·mysql·面试·八股·大厂实习
呆呆敲代码的小Y26 分钟前
【实战精选面试题】C# 面试题详细解答,按难易程度排序
android·java·游戏·c#·游戏开发·unity面试题·c#面试题
水无痕simon42 分钟前
3、工程重构
java·spring cloud·重构
阿里云基础软件1 小时前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 项目:需求分析与滑动数据设计
java·开发语言·交友
前端 贾公子2 小时前
第 5 章:Codex 从可运行程序到可交付工具
java·前端·数据库
CoderYanger2 小时前
Java EE 进阶:5. Spring IoC&DI(第三弹):Spring DI
java·开发语言·spring boot·spring·面试·java-ee·mvc
一条泥憨鱼2 小时前
【Kafka】零基础学习教程
java·分布式·学习·kafka
Wang's Blog3 小时前
Java 项目实战:交友项目 - 即时通信总结:全链路复盘、可复用清单与自检
java·python·交友