若依框架RuoYi-Cloud整合Mybatis-Plus集成攻略

若依框架本身的使用的是mybatis,生成代码的时候很多字段都在xml里,要是加或者减都会影响开发效率一个个去删除增加,贼麻烦所以参考了 这位大佬的文章:

Ruo-Cloud若依微服务版本集成mp(mybatis-plus)详细步骤_ruoyi-cloud集成mybatisplus-优快云博客文章浏览阅读1.2k次,点赞11次,收藏12次。有这个你直接点刷新,是不会去下载依赖的,除非你本地已经之前下过这个依赖,这里要用mvn clean install 来安装依赖 不知道怎么执行命令的 简单一点点击idea右边的maven 选住这两点击运行就可以。脚手架 ,业务表每要添加一个字段,就得去改xml里面的sql,就想着集成mybatis-plus来完成,经历了一系列的搜索,终于完成了,特此记录。只需要覆盖原本有mybatis配置的yml 像File Auth这样的模块本身就没有这块的配置 就不用更改了。引入之后 这里刷新一下就好了。_ruoyi-cloud集成mybatisplus https://blog.youkuaiyun.com/weixin_61550453/article/details/143177953?fromshare=blogdetail&sharetype=blogdetail&sharerId=143177953&sharerefer=PC&sharesource=Yuskun9831&sharefrom=from_link

在他的基础上我做了一些调整,大家可以择优配置,毕竟适合的才是最重要的。 

第一步的话,大家需要先去 Nacos   的配置中心去修改配置文件 替换覆盖一下原来的配置文件。


# mybatis配置
# mybatis:
    # 搜索指定包别名
   # typeAliasesPackage: com.ruoyi.system
    #  配置mapper的扫描,找到所有的mapper.xml映射文件
    # mapperLocations: classpath:mapper/**/*.xml
# mp配置    
mybatis-plus:
  mapper-locations: classpath*:mapper/**/*Mapper.xml  
  type-aliases-package: com.ruoyi.**.domain            
  global-config:
    db-config:
      id-type: ASSIGN_ID                                    
      logic-delete-value: 1                           
      logic-not-delete-value: 0                        
  configuration:
    map-underscore-to-camel-case: true                
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

然后记得点击  发布 
然后要引入pom文件了,去若依框架最外层的pom下添加依赖


原作者的mp版本是3.5.5 但是我怎么安都安装不上,所以我用了3.5.3.1 大家按需选择哈~

            <mybatis-plus-version>3.5.3.1</mybatis-plus-version>

              <!-- mp -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus-version}</version>
            </dependency>
引用原作者的一段话:"引入之后这里要提一嘴  ruoyi-cloud有用到版本管理 也就是说用dependencyManagement 标签,有这个你直接点刷新,是不会去下载依赖的,除非你本地已经之前下过这个依赖,这里要用mvn clean install  来安装依赖  不知道怎么执行命令的 简单一点点击idea右边的maven  选住这两点击运行就可以"
然后去 ruoyi-common-core 这个模块下去引入依赖
 
       <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>

 然后的话刷新一下maven依赖
下面继续奉上原作者的的 MyBatisPlusConfig 配置文件 
 

目录是

package com.ruoyi.common.core.config; 别忘了新建config文件夹....
package com.ruoyi.common.core.config;
 
 
import com.baomidou.mybatisplus.annotation.DbType;
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;
 
@Configuration
public class MyBatisPlusConfig {
 
    /**
     * 分页插件
     */
    @Bean
    public PaginationInnerInterceptor paginationInterceptor() {
        PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
        // 设置请求的页面大于最大页后是否进行回滚, true回滚, false继续
        paginationInterceptor.setOverflow(false);
        // 设置最大单页限制数量, 默认 500 条, -1 不受限制
        paginationInterceptor.setDbType(DbType.MYSQL);
        paginationInterceptor.setMaxLimit(-1L);
        return paginationInterceptor;
    }
 
    /**
     * 乐观锁插件
     */
    @Bean
    public OptimisticLockerInnerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInnerInterceptor();
    }
 
 
    /**
     * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html
     */
    public BlockAttackInnerInterceptor blockAttackInnerInterceptor() {
        return new BlockAttackInnerInterceptor();
    }
 
    
}

原作者还贴心的配置了分页和乐观锁 以及全局操作表时锁表,给他点赞。
完成上面这一步以后 要在resources\META-INF\spring的org.springframework.boot.autoconfigure.AutoConfiguration文件里添加一个
 

com.ruoyi.common.core.config.MyBatisPlusConfig



这里之所以要添加 我搜了一下,需要显式注册到 AutoConfiguration.imports 的场景 包括但不限于,这个包(模块)被其他的模块引用了,然后我就去看ruoyi-common-core,

他是被一部分模块给引用了,所以需要显示的去注册。
我还思考了一个问题,就是MyBatisPlusConfig 已经被 SPring通过 @Configuration 管理了,为什么还要显式去写到文件里?大概也是因为模块不同 别的模块想去引用所以 就需要写到那个文件里。。(感觉描述的不是很清晰,大佬可以评论一下这个的原理,我也想知道一下)

然后最后就可以尝试启动每一个服务了!
作者成功了~

但是!!!
但是有可能还会遇到一些问题,很奇葩 具体异常我忘了,大概就是以下几点我跟大家说一下

可能gen服务和joblog服务会启动失败,提示一个问题出在MyBatis无法找到GenTableColumn实体类 什么找不到 类似于这样!

Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'GenTableColumn'.  Cause: java.lang.ClassNotFoundException: Cannot find class: GenTableColumn

最后我去找答案了,tm的是因为没扫描到实体类,把原先这两个服务的mapper.xml文件里的

 <select id="selectGenTableColumnListByTableId" parameterType="GenTableColumn" resultMap="GenTableColumnResult">

改成 具体路径,(gen和joblog服务的每一个爆红的都要改成具体的实体类路径)

 <select id="selectGenTableColumnListByTableId" parameterType="com.ruoyi.gen.domain.GenTableColumn" resultMap="GenTableColumnResult">

如果不改就会这样

反之改了就会

这是改好的


这四个都要改。
然后最后的话把一些maper继承BaseMapper 就可以了,基本就这样。
祝大家每一个都启动成功!欢迎指正!

### RuoYi-Cloud 集成 MyBatis-Plus 示例教程 #### 1. 添加依赖项 为了在 `RuoYi-Cloud` 中集成 `MyBatis-Plus`,首先需要修改项目的 `pom.xml` 文件,在其中添加必要的依赖项。 ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> ``` 此操作确保了项目能够使用 `MyBatis-Plus` 提供的功能[^1]。 #### 2. 数据库配置 编辑 `application.yml` 或者 `application.properties` 文件来设置数据库连接参数: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver ``` 这些配置使得应用程序可以正确地连接到 MySQL 数据库并执行 SQL 查询。 #### 3. 创建实体类 创建一个简单的 Java 类作为数据表对应的实体对象。假设有一个名为 `User` 的表格,则相应的实体类如下所示: ```java import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; @TableName("sys_user") public class User { @TableField(value = "id", exist = true) private Long id; @TableField(value = "username", exist = true) private String username; // Getters and Setters... } ``` 这段代码定义了一个映射至 `sys_user` 表格的 POJO (Plain Old Java Object),用于表示用户的记录。 #### 4. 编写 Mapper 接口 接下来编写一个继承自 `BaseMapper<T>` 的接口,这里 T 是之前定义好的实体类型: ```java import org.apache.ibatis.annotations.Mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @Mapper public interface UserMapper extends BaseMapper<User> {} ``` 这一步骤建立了与数据库交互的基础方法集,允许开发者轻松完成 CRUD 操作而无需手写复杂的 SQL 语句。 #### 5. 使用 Service 层封装业务逻辑 通常情况下会再加一层服务层(Service Layer) 来处理具体的业务需求。比如查询某个特定条件下的用户列表: ```java @Service public class UserService { @Autowired private UserMapper userMapper; public List<User> getUsersByUsername(String keyword){ QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.like("username",keyword); return userMapper.selectList(queryWrapper); } } ``` 上述例子展示了如何通过组合 `QueryWrapper` 和 `selectList()` 方法快速构建动态查询条件,并返回满足要求的结果集合。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值