Mybatis-plus與Mybatis依賴沖突問題解決方法

錯誤描述

An attempt was made to call a method that does not exist. The attempt was made from the following location:

com.baomidou.mybatisplus.core.MybatisMapperAnnotationBuilder.getLanguageDriver(MybatisMapperAnnotationBuilder.java:369)

The following method did not exist:

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

The method’s class, com.baomidou.mybatisplus.core.MybatisConfiguration, is available from the following locations:

說明

SpringBoot版本:2.3.9.RELEASE
MyBatis-plus版本:3.3.1

這個問題不是一開始就存在的,在SpringBoot版本2.X是正常的,但是在提升SpringBoot版本後,就出現瞭這個問題

在這裡插入圖片描述

解決過程

首先不要果斷的下定論這個是什麼問題,類似這樣的問題可以通過IDEA工具定位一下,鼠標點擊【1】位置進入到對應的代碼位置,註意要點擊右上角提示的Download Source下載源碼

在這裡插入圖片描述

待代碼下載完畢之後,這裡可以很清晰的看到configuration沒有getLanguageDriver這個方法,在進入到configuration對象

在這裡插入圖片描述

可以看到最終定位到瞭上面的位置,然後看到extends關鍵字可以分析出getLanguageDriver肯定是存在於下面的倆個類中的

com.baomidou.mybatisplus.core.MybatisConfiguration
org.apache.ibatis.session.Configuration

在針對上面倆個包路徑分析,可以看到第一個是屬於mybatisplus.core依賴下的,第二個是屬於mybatis依賴下,於是針對這倆種情況分別做個測試
1、升級mybatisplus包依賴,但是我這邊已經是很高的版本的瞭,及時升級到最新的版本後依然沒有看到getLanguageDriver方法,所以問題不在這裡
2、升級mybatis包,由於引入的mybatis-plus-boot-starter已經集成瞭MyBatis包,所以這裡需要首先將其exclude,然後引入單獨的較高版本的MyBatis包依賴

在這裡插入圖片描述

升級完成之後再進入到剛才錯誤的位置,可以看到已經正常瞭

在這裡插入圖片描述

可以看到最終這個方法處理邏輯是由父類完成的

org.apache.ibatis.session.Configuration#getLanguageDriver

到此這篇關於Mybatis-plus與Mybatis依賴沖突問題解決方法的文章就介紹到這瞭,更多相關Mybatis-plus與Mybatis依賴沖突內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀:

    None Found