乐趣区

springboot2整合mybatisplus3踩到的坑

前言

最近在进行我的项目重构,在架构师的倡议下,就把我的项目中 mybatis 切换成 mybatis-plus。因为 mybatis-plus 在 mybatis 的根底上只做加强不做扭转,因而切换的老本很低,就只需改 jar 和配置内容,原先的代码无需改变。

因为 mybatis-plus 对 mybatis 的敌对反对,咱们花了一点工夫就把 mybatis 改成 mybatis-plus,那革新成不胜利,先启动一下看不就晓得了。然而一启动就翻车了,报了如下的谬误

 com.baomidou.mybatisplus.core.MybatisConfiguration.getLanguageDriver(Ljava/lang/Class;)Lorg/apache/ibatis/scripting/LanguageDriver;

残缺的异样信息如下图

排查思路

从打印的异样信息,咱们晓得是不存在 getLanguageDriver()这个办法。跟进源码会发现

getLanguageDriver 这个办法可能是由

com.baomidou.mybatisplus.core.MybatisConfiguration

或者 MybatisConfiguration 的父类

org.apache.ibatis.session.Configuration

提供。由异样信息咱们能够猜想如果我的项目要启动胜利,就须要 getLanguageDriver 这个办法,而我的项目目前援用的 MybatisConfiguration 及其 Configuration 都有力提供,由此咱们能够推断咱们我的项目引入冒牌的 MybatisConfiguration 或者 Configuration。更进一步的推断咱们我的项目中应该存在多个
MybatisConfiguration 或者 Configuration。用人话来说,就是咱们我的项目存在类抵触,更直白点就是jar 抵触

验证过程

1、我的项目中存在多个 MybatisConfiguration?

按住快捷键 Ctrl+Shift+R

很遗憾事件不是咱们想的那样,MybatisConfiguration 只有一个

2、我的项目中存在多个 Configuration?

按住快捷键 Ctrl+Shift+R


果然存在 2 个 Configuration。

3、验证包抵触

利用 maven-helper 插件查看 jar 抵触


很显著存在 mybatis 包抵触,而且咱们我的项目引入的 3.4.4 版本的 mybatis,而 mybatis-plus 须要引入的是 3.5.3 版本的 mybatis

解决思路

借助 maven-helper 插件,咱们能够看出我的项目是因为包传递依赖间接引入 3.4.4 版本的 mybatis。因而咱们把有援用 3.4.4 版本 mybatis 的我的项目升级成引入 mybatis 3.5.3 版本就行

总结

本文呈现的坑挺常见的,利用搜索引擎应该都能够找到答案。写这篇文章除了介绍如何解决这个坑,次要还是想介绍一种排查问题的思路,即 假如验证法。因为并不是每次都能够从搜索引擎上找到答案,此时咱们就能够依据已知信息去一步步论证推断。最初如果对 maven 抵触解决感兴趣的敌人,能够查看下我之前写的文章
maven 依赖抵触以及解决办法

退出移动版