开发喵星球

# 若依分离版集成 MyBatis-Plus(378)

MyBatis-Plus 是基于 MyBatis 的增强框架,它在不改变 MyBatis 原生特性的基础上,提供了众多功能扩展,显著提升了开发效率。其支持的功能包括通用的 CRUD 操作、多种主键策略、分页功能、性能分析和全局拦截等。接下来,我们将逐步指导如何在若依分离版中集成 MyBatis-Plus

1. 添加 MyBatis-Plus 依赖

ruoyi-common/pom.xml 文件中,我们需要添加 MyBatis-Plus 的相关依赖。请在 <dependencies> 标签内加入以下代码:

<!-- MyBatis-Plus 增强 CRUD 功能 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.1</version>
</dependency>

2. 配置 MyBatis-Plus

接下来,打开 ruoyi-admin 模块的 application.yml 文件,进行 MyBatis 的配置调整,使其适应 MyBatis-Plus 的特点。更新配置如下:

# MyBatis Plus 配置
mybatis-plus:
  # 指定别名包路径
  typeAliasesPackage: com.ruoyi.**.domain
  # 配置 mapper 的扫描路径,确保所有 mapper.xml 映射文件都能被找到
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  # 加载全局配置文件
  configLocation: classpath:mybatis/mybatis-config.xml

3. 创建 MybatisPlusConfig.java 配置类

我们需要创建一个新的 MyBatis-Plus 配置类 MybatisPlusConfig.java。在此之前,请确保删除原有的 MyBatisConfig.java 文件。新的配置类代码如下:

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();
    }
}

总结

通过以上步骤,我们成功将 MyBatis-Plus 集成到若依分离版中。这一集成不仅简化了 CRUD 操作,还增强了应用的性能和安全性,使开发者能够更专注于业务逻辑的实现。

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-11-02 15:04:14 阅读量:46
<<   >>


powered by kaifamiao