本篇文章將和大家分享關(guān)于在Springboot項(xiàng)目開發(fā)過(guò)程中,遇到的Mybatis-plus和Mybatis依賴產(chǎn)生沖突的問(wèn)題,以及具體解決沖突問(wèn)題的方法。
錯(cuò)誤描述
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:
說(shuō)明
SpringBoot版本:2.3.9.RELEASE
MyBatis-plus版本:3.3.1
這個(gè)問(wèn)題不是一開始就存在的,在SpringBoot版本2.X是正常的,但是在提升SpringBoot版本后,就出現(xiàn)了這個(gè)問(wèn)題
解決過(guò)程
首先不要果斷的下定論這個(gè)是什么問(wèn)題,類似這樣的問(wèn)題可以通過(guò)IDEA工具定位一下,鼠標(biāo)點(diǎn)擊【1】位置進(jìn)入到對(duì)應(yīng)的代碼位置,注意要點(diǎn)擊右上角提示的Download Source下載源碼
待代碼下載完畢之后,這里可以很清晰的看到configuration沒(méi)有g(shù)etLanguageDriver這個(gè)方法,在進(jìn)入到configuration對(duì)象
可以看到最終定位到了上面的位置,然后看到extends關(guān)鍵字可以分析出getLanguageDriver肯定是存在于下面的倆個(gè)類中的
com.baomidou.mybatisplus.core.MybatisConfiguration
org.apache.ibatis.session.Configuration
在針對(duì)上面?zhèn)z個(gè)包路徑分析,可以看到第一個(gè)是屬于mybatisplus.core依賴下的,第二個(gè)是屬于mybatis依賴下,于是針對(duì)這倆種情況分別做個(gè)測(cè)試
1、升級(jí)mybatisplus包依賴,但是我這邊已經(jīng)是很高的版本的了,及時(shí)升級(jí)到最新的版本后依然沒(méi)有看到getLanguageDriver方法,所以問(wèn)題不在這里
2、升級(jí)mybatis包,由于引入的mybatis-plus-boot-starter已經(jīng)集成了MyBatis包,所以這里需要首先將其exclude,然后引入單獨(dú)的較高版本的MyBatis包依賴
升級(jí)完成之后再進(jìn)入到剛才錯(cuò)誤的位置,可以看到已經(jīng)正常了
可以看到最終這個(gè)方法處理邏輯是由父類完成的
org.apache.ibatis.session.Configuration#getLanguageDriver
本篇關(guān)于在Springboot項(xiàng)目中使用Mybatis-plus和Mybatis依賴產(chǎn)生依賴的問(wèn)題以及解決方法的詳細(xì)內(nèi)容就介紹完了,如果想要了解更多關(guān)于Springboot中的Mybatis-plus或Mybatis依賴的內(nèi)容,請(qǐng)多多關(guān)注W3Cschool其他相關(guān)內(nèi)容的文章。