springboot2整合mybatis-plus3踩到的坑


前言

最近在進行項目重構,在架構師的建議下,就把項目中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;

完整的異常信息如下圖
啟動報錯.png

排查思路

從打印的異常信息,我們知道是不存在getLanguageDriver()這個方法。跟進源碼會發現
方法找不到.png
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沖突.png
很遺憾事情不是我們想的那樣,MybatisConfiguration只有一個

2、項目中存在多個Configuration?

按住快捷鍵Ctrl+Shift+R

Configuration沖突.png
果然存在2個Configuration。

3、驗證包沖突

利用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依賴沖突以及解決方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM