RuoYi 系统升级使用 Mybatis-Plus
由于之前习惯使用 Mybatis-Plus
,而 RuoYi
系统使用的 Mybatis
,用起来有点不太习惯,于是就将其改造为 Mybatis-Plus
版本。
整合好的仓库地址
版本
使用的是 3.9.0
版本,而且切换使用的 springboot3
分支,所以整合后的架构为 jdk17
+ springboot3
+ mybatis-plus
修改
拉取仓库代码到本地后,先切换到 springboot3
的分支上
调整 mybatis 依赖
删除 mybatis
相关的依赖包,修改主目录下的 pom.xml
文件,找到 mybatis
依赖,并注释掉相关的行
引入新的 mybatis-plus
依赖
调整 mybatis
配置
调整 ruoyi-framework
项目下的 MyBatisConfig.java
文件,将里面的代码全部注释掉,相当于不要这份配置,或者将整个文件删掉
加入新的 MyBatisPlusConfig.java
配置
由于加入了 mybatis-plus
的东西,所以项目内需要引入相关的依赖包
调整 ruoyi-admin
项目下的 application.yml
文件,将 mybatis
的配置注释掉,或者删掉
加入新的 mybatis-plus
配置
调整分页插件
这里有个大坑,就是如果只处理了上面的 mybatis
的替换,这时候运行项目,是会报错的。
|
|
这是一个典型的 Spring 与 MyBatis-Plus 冲突导致 Mapper 接口注册失败 的问题,核心的原因就是,MyBatis 和 MyBatis-Plus 同时存在,导致 Mapper 被重复扫描、定义冲突
但是奇怪的是,上面我们已经将 mybatis
相关的依赖都注释掉了,所以不应该存在 mybatis
相关的依赖包才对。
于是想到的可能就是其他依赖包引入进来的,后来通过 Dependency Hierarchy
查到,原来就是项目引入了 pagehelper
插件项目引起的。
|
|
从下图的依赖可以查询到,就是通过上面的 pagehelper-spring-boot-starter
引入进来的,所以导致冲突了。
但是这个分页的依赖我们还是需要保留的,因为原项目中的分页需要使用到这个插件(稍后会说明),这里我们先加入新的 mybatis-plus
的分页插件 mybatis-plus-jsqlparser
原项目的分页插件使用的地方在 ruoyi-common
项目,首先需要排除它自动引入的 mybaits
依赖,同时要添加 mybatis-plus
依赖和 jsqlparser 分页插件
项目中有个 PageUtils
的分页工具类,里面就使用到这个插件
还有一个地方就是原项目的控制层都会继承的 BaseController
,里面会用到上面说的 PageUtils
的分页工具类
运行项目
导入 sql
文件后,就来看看是否能运行起来
看到熟悉的登录界面,验证码也能够刷新出来
能够成功登录进来,而且也能够查询到数据,也有分页,证明改造升级成功了 80%
测试
剩下的 20%
就是看看新生成的 mybatis-plus
代码能不能生效,我们来新建一张数据表,同时我们使用一个插件 MyBatisX
来帮我们快速生成代码
安装完成后,我们就能够通过 Database
中,找到我们需要生成代码的数据表,右键并点击 MybatisX-Generator
接着选择代码生成的位置,如下图所示
最后我们勾选上 mybatis-plus3
模型,点击 Finish
即可
这时候就可以看到项目中生成了新的底层代码,同时看到也是集成了 Mybatis-Plus
的接口。
这里需要注意的是,由于项目中新增加了 Mybatis-Plus
的相关代码,所以我们需要引入相关的依赖包,主要在 ruoyi-common
项目中引入即可(上面已经介绍需要引入过了,这里再检查一下有没有相关的依赖引入)
但是通过这种方式并不会自动生成 Controller
和 前端页面代码
,所以需要自己去写,关于如何调整后台系统工具中 代码生成
功能,后面的文章再继续探讨这个问题。
编写简单样例
自己手搓一个 StudentController
,实现一些简单的增删改查接口。
然后再写个简单的列表页,在后台添加相关的菜单,验证一下整个流程是否走通。