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>{
相关推荐
zhangkaixuan45618 小时前
Apache Paimon 写入流程
java·大数据·apache·paimon
Java爱好狂.18 小时前
分布式ID|从源码角度深度解析美团Leaf双Buffer优化方案
java·数据库·分布式·分布式id·es·java面试·java程序员
胡桃夹夹子18 小时前
存档111111111
java·开发语言
不会编程的小寒18 小时前
C++ 中string的用法
java·开发语言
乐悠小码18 小时前
Java设计模式精讲---02抽象工厂模式
java·设计模式·抽象工厂模式
数据的世界0118 小时前
技术变革:为何C#与.NET是未来的开发方向
java·c#·.net
向上的车轮18 小时前
Actix Web适合什么类型的Web应用?可以部署 Java 或 .NET 的应用程序?
java·前端·rust·.net
脸大是真的好~19 小时前
黑马JAVAWeb-03 SpringBootWeb-分层解耦-三层架构-@SpringBootApplication注解-IOC控制反转-DI依赖注入
java
微露清风19 小时前
系统性学习C++-第十讲-stack 和 quene
java·c++·学习
一蓑烟雨任平生√19 小时前
两种上传图片的方式——91张先生
java·ossinsight