若依框架本身的使用的是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 就可以了,基本就这样。
祝大家每一个都启动成功!欢迎指正!