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>{
相关推荐
九转苍翎6 小时前
Java内功修炼(3)——并发的四重境界:单例之固、生产消费之衡、定时之准、池化之效
java·设计模式·thread
手握风云-6 小时前
JavaEE 进阶第一期:开启前端入门之旅(上)
java·前端·java-ee
一只鱼^_6 小时前
365. 水壶问题(详解)
java·javascript·c++·leetcode·线性回归
趙卋傑7 小时前
Spring原理
java·后端·spring
v_cxsj8137 小时前
基于大数据的京东手机销售数据 可视化分析设计与开发03446原创的定制程序,java、PHP、python、C#小程序、文案全套、毕设程序定制、成品等
java·大数据·智能手机
saddhu.7 小时前
C++ 快速复习指南(上半部分)
java·c++·算法
大厂码农老A7 小时前
凌晨零点,一个TODO,差点把我们整个部门抬走
java