Featured image of post RuoYi 系统升级使用 Mybatis-Plus

RuoYi 系统升级使用 Mybatis-Plus

若依框架是一套基于Spring Boot和Vue的前后端分离的快速开发平台。为了简化开发和提高效率,可以在若依框架中集成MyBatis-Plus

RuoYi 系统升级使用 Mybatis-Plus

由于之前习惯使用 Mybatis-Plus,而 RuoYi 系统使用的 Mybatis,用起来有点不太习惯,于是就将其改造为 Mybatis-Plus 版本。

整合好的仓库地址

https://gitee.com/liurb-public/ruoyi-springboot3-mp.git

版本

使用的是 3.9.0 版本,而且切换使用的 springboot3 分支,所以整合后的架构为 jdk17 + springboot3 + mybatis-plus

https://gitee.com/y_project/RuoYi-Vue.git

image

修改

拉取仓库代码到本地后,先切换到 springboot3 的分支上

image

调整 mybatis 依赖

删除 mybatis 相关的依赖包,修改主目录下的 pom.xml 文件,找到 mybatis 依赖,并注释掉相关的行

image

image

引入新的 mybatis-plus 依赖

image

image

调整 mybatis 配置

调整 ruoyi-framework 项目下的 MyBatisConfig.java 文件,将里面的代码全部注释掉,相当于不要这份配置,或者将整个文件删掉

image

加入新的 MyBatisPlusConfig.java 配置

image

由于加入了 mybatis-plus 的东西,所以项目内需要引入相关的依赖包

image

调整 ruoyi-admin 项目下的 application.yml 文件,将 mybatis 的配置注释掉,或者删掉

image

加入新的 mybatis-plus 配置

image

调整分页插件

这里有个大坑,就是如果只处理了上面的 mybatis 的替换,这时候运行项目,是会报错的。

1
2
ERROR o.s.b.SpringApplication - [reportFailure,859] - Application run failed
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'sysConfigMapper' defined in file [xxxxx\com\ruoyi\system\mapper\SysConfigMapper.class]: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String

这是一个典型的 Spring 与 MyBatis-Plus 冲突导致 Mapper 接口注册失败 的问题,核心的原因就是,MyBatis 和 MyBatis-Plus 同时存在,导致 Mapper 被重复扫描、定义冲突

但是奇怪的是,上面我们已经将 mybatis 相关的依赖都注释掉了,所以不应该存在 mybatis 相关的依赖包才对。

于是想到的可能就是其他依赖包引入进来的,后来通过 Dependency Hierarchy 查到,原来就是项目引入了 pagehelper 插件项目引起的。

1
2
3
4
5
    <!-- pagehelper 分页插件 -->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
    </dependency>

从下图的依赖可以查询到,就是通过上面的 pagehelper-spring-boot-starter 引入进来的,所以导致冲突了。

image

但是这个分页的依赖我们还是需要保留的,因为原项目中的分页需要使用到这个插件(稍后会说明),这里我们先加入新的 mybatis-plus 的分页插件 mybatis-plus-jsqlparser

ruoyi_mp_40.png

原项目的分页插件使用的地方在 ruoyi-common 项目,首先需要排除它自动引入的 mybaits 依赖,同时要添加 mybatis-plus 依赖和 jsqlparser 分页插件

ruoyi_mp_40_1.png

项目中有个 PageUtils 的分页工具类,里面就使用到这个插件

ruoyi_mp_42.png

还有一个地方就是原项目的控制层都会继承的 BaseController,里面会用到上面说的 PageUtils 的分页工具类

ruoyi_mp_43.png

运行项目

导入 sql 文件后,就来看看是否能运行起来

image

看到熟悉的登录界面,验证码也能够刷新出来

ruoyi_mp_46.png

能够成功登录进来,而且也能够查询到数据,也有分页,证明改造升级成功了 80%

测试

剩下的 20% 就是看看新生成的 mybatis-plus 代码能不能生效,我们来新建一张数据表,同时我们使用一个插件 MyBatisX 来帮我们快速生成代码

image

安装完成后,我们就能够通过 Database 中,找到我们需要生成代码的数据表,右键并点击 MybatisX-Generator

image

接着选择代码生成的位置,如下图所示

image

最后我们勾选上 mybatis-plus3 模型,点击 Finish 即可

image

这时候就可以看到项目中生成了新的底层代码,同时看到也是集成了 Mybatis-Plus 的接口。

image

这里需要注意的是,由于项目中新增加了 Mybatis-Plus 的相关代码,所以我们需要引入相关的依赖包,主要在 ruoyi-common 项目中引入即可(上面已经介绍需要引入过了,这里再检查一下有没有相关的依赖引入)

image

但是通过这种方式并不会自动生成 Controller前端页面代码,所以需要自己去写,关于如何调整后台系统工具中 代码生成 功能,后面的文章再继续探讨这个问题。

编写简单样例

自己手搓一个 StudentController ,实现一些简单的增删改查接口。

image

然后再写个简单的列表页,在后台添加相关的菜单,验证一下整个流程是否走通。

image

本博客所有内容无特殊标注均为大卷学长原创内容,复制请保留原文出处。
Built with Hugo
Theme Stack designed by Jimmy