springboot2整合mybatis-plus3踩到的坑

前言

最近在进行项目重构,在架构师的建议下,就把项目中mybatis切换成mybatis-plus。由于mybatis-plus在mybatis的基础上只作加强不作改变,所以切换的成本很低,就只需改jar和配置内容,原先的代码无需改动。java

由于mybatis-plus对mybatis的友好支持,咱们花了一点时间就把mybatis改为mybatis-plus,那改形成不成功,先启动一下看不就知道了。然而一启动就翻车了,报了以下的错误apache

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

完整的异常信息以下图
启动报错.pngsession

排查思路

从打印的异常信息,咱们知道是不存在getLanguageDriver()这个方法。跟进源码会发现
方法找不到.png
getLanguageDriver这个方法多是由mybatis

com.baomidou.mybatisplus.core.MybatisConfiguration

或者MybatisConfiguration的父类架构

org.apache.ibatis.session.Configuration

提供。由异常信息咱们能够猜想若是项目要启动成功,就须要getLanguageDriver这个方法,而项目目前引用的MybatisConfiguration及其Configuration都无力提供,由此咱们能够推断咱们项目引入冒牌的MybatisConfiguration或者Configuration。更进一步的推断咱们项目中应该存在多个
MybatisConfiguration或者Configuration。用人话来讲,就是咱们项目存在类冲突,更直白点就是jar冲突maven

验证过程

一、项目中存在多个MybatisConfiguration?搜索引擎

按住快捷键Ctrl+Shift+R
MybatisConfiguration冲突.png
很遗憾事情不是咱们想的那样,MybatisConfiguration只有一个插件

二、项目中存在多个Configuration?3d

按住快捷键Ctrl+Shift+Rcode

Configuration冲突.png
果真存在2个Configuration。

三、验证包冲突

利用maven-helper插件查看jar冲突

冲突.png
很明显存在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依赖冲突以及解决方法

相关文章
相关标签/搜索