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>{
相关推荐
Gogo8163 小时前
k8s 跟 nacos 关于服务注册以及服务发现
java·nacos·k8s
qq_334060213 小时前
SpringMVC-数据绑定(日期型)-JSR-303 Validation验证-json处理
java·开发语言·spring
yujkss3 小时前
23种设计模式之【工厂方法模式】-核心原理与 Java实践
java·设计模式·工厂方法模式
风语者日志3 小时前
创建者模式:工厂方法模式
java·设计模式
allione3 小时前
Spring-AI简单实践
java·人工智能·spring
爱读源码的大都督3 小时前
2000字源码分析,聊聊Spring的扫描机制底层到底是如何实现的?
java·后端·spring
new_daimond3 小时前
设计模式-责任链模式详解
java·设计模式·责任链模式
维尔切3 小时前
Apache Tomcat 部署与配置
java·linux·运维·tomcat·apache
对不起初见i3 小时前
MyBatis-Plus 全方位深度指南:从入门到精通
java·数据库·mybatis
橙-极纪元4 小时前
windows系统使用sdkman管理java的jdk版本,WSL和Git Bash哪个更能方便管理jdk版本
java·windows·sdkman