前言
最近在进行我的项目重构,在架构师的倡议下,就把我的项目中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依赖抵触以及解决办法