mybatis jar包_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;

完整的異常信息如下圖

4fbfa423cc8567dcd4ad6c0eb65ba0f6.png

排查思路

從打印的異常信息,我們知道是不存在getLanguageDriver()這個方法。跟進源碼會發現

ed33830bf68d5756fa55eabe08aca6bd.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

0d67ccf8bc4100dd371f602e0017e64c.png


很遺憾事情不是我們想的那樣,MybatisConfiguration只有一個

2、項目中存在多個Configuration?

按住快捷鍵Ctrl+Shift+R

753b2cf5a6fb8378db2137d0d1d9e99a.png


果然存在2個Configuration。

3、驗證包沖突

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

22282471ba42cb7b05c99f88d5d04ad6.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依賴沖突以及解決方法?mp.weixin.qq.com
ab403d56048310f155b7703c6f12ea68.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276746.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276746.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276746.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java_二進制的前導的零

題目內容: 計算機內部用二進制來表達所有的值。一個十進制的數字,比如18,在一個32位的計算機內部被表達為00000000000000000000000000011000。可以看到,從左邊數過來,在第一個1之前,有27個0。我們把這些0稱…

共享幾套silverlight2 toolkit最新的皮膚控件樣式下載

下載了最新的silverlight2 toolkit看看,發現里面的控件樣式還是多漂亮的,與大家分享下。 blue dark light orange purple red 樣式源碼下載:點擊下載 當然,我最喜歡的還是orange哦。 轉載于:https://www.cnblogs.com/liaohenchen/…

python爬取同花順_Java爬取同花順股票數據(附源碼)

最近有小伙伴問我能不能抓取同花順的數據,最近股票行情還不錯,想把數據抓下來自己分析分析。我大A股,大家都知道的,一個概念火了,相應的股票就都大漲。 如果能及時獲取股票漲跌信息,那就能在剛開始火起來的…

開會=浪費時間?阿里技術團隊這樣開項目復盤會

2019獨角獸企業重金招聘Python工程師標準>>> 阿里妹導讀:復盤是項目結束后必不可少的階段,好的復盤會議能夠有效地促進團隊成長。今天,阿里項目管理專家鹿迦以自身的經驗,為大家分享如何做好一個項目的復盤。這篇文章分…

Spring @Value注解無法正確賦值問題

正確的調用方式為: Component public class IconProperties {Value("${icon.url}")private String url; } public class test{AutowiredIconProperties icon;public void test(){ String url icon.url; } } 這里有三個需要注意的點: 1.Value…

Extjs中使用FusionChart舉例

一 前言: 在項目實施中,設計統計部分經常會使用圖表進行顯示,在Extjs3中內置了圖表控件,但實際表現無法達到3D的美觀效果,通過查找FusionChart可以實現比較美觀的3D或2D圖表顯示。注:FusionChart是個商業…

drawitem設置指定行的背景顏色_Java 為 Excel 中的行設置交替背景色

點擊上方 好好學java ,選擇 星標 公眾號重磅資訊、干貨,第一時間送達今日推薦:牛人 20000 字的 Spring Cloud 總結,太硬核了~作者:Jazzz鏈接:https://www.cnblogs.com/jazz-z/p/12665819.html在制作Excel表…

常見的關系型數據庫和非關系型數據及其區別

一、關系型數據庫 關系型數據庫最典型的數據結構是表,由二維表及其之間的聯系所組成的一個數據組織 優點:1、易于維護:都是使用表結構,格式一致;2、使用方便:SQL語言通用,可用于復雜查詢&#x…

逆序數技巧 - 牛客

鏈接:https://ac.nowcoder.com/acm/contest/308/D來源:牛客網 題目描述 tokitsukaze給你一個長度為n的序列,這個序列是1到n的一種排列。然后她會進行q次操作。每次操作會給你L R k這三個數,表示區間[L,R]往右移動k次。移動一次的…

Ajax跨域提交JSON和JSONP

可以直接使用$.getJSON()方法實現跨域請求,參數中必須加上callback,如: var jsonpUrl http://www.test.com/index.php?cApi_Order&aAddOrder&callback?;var param {uid:uid,type:type,cityId:cityId};$.getJSON(jsonpUrl, param,…

mysql數據庫商業版與社區版的區別

1、商業版本組織管理與測試環節控制更嚴格,穩定性方面,會比社區版本更穩定。 2、mysql是成熟產品,商業版與社區版之間性能方面相差不大。 3、商業版不遵守GPL協議,社區版遵守GPL協議可以免費使用。 4、使用商業版后可以購買相關的…

UML的奧妙 - 學習UML筆記(1)

前兩天買了一本《大象 Thinking in UML》,其實本就有學習UML的念頭,但都因這樣那樣的事兒耽擱了,當然,也有些惰性在作祟...... 閑話少說,這本書看完了一章,發現還是不錯的,先把這兩天的學習情況…

無法檢查指定的位置是否位于cfs上_(干貨分享)一文搞明白 節氣門位置傳感器的作用、故障類型與癥狀、診斷方法...

1 位置節氣門位置傳感器(ThrottlePositionSensor,TPS),位于節氣門體上,其安裝形式因節氣門結構的不同而有所差異:對于傳統的機械拉索式節氣門,節氣門位置傳感器通常以一個獨立元件的形式安裝在節氣門體的側面&#xf…

盒子模型

1 <!doctype html>2 <html>3 <head>4 <title>盒子模型</title>5 <meta charset"utf-8">6 <meta name"keywords", content"">7 <meta name"description&…

表單跨域提交

利用form表單跨域post 現在ajax應用這么廣泛&#xff0c;一般的應用都是直接通過異步調用就可以了&#xff0c;但是有些東西必須要使用post&#xff0c;而且是跨域的時候&#xff0c;ajax異步調用的方式就無能為力了。當然現在也有很多種辦法&#xff0c;比如通過flash中轉去po…

Asp.net(C#)-顯示所有緩存 清除所有緩存

//清除所有緩存protectedvoidRemoveAllCache() { System.Web.Caching.Cache _cache HttpRuntime.Cache; IDictionaryEnumerator CacheEnum _cache.GetEnumerator(); ArrayList al new ArrayList(); while (CacheEnum.MoveNext()) { …

mysql數據庫三大引擎優缺點

1.MyISAM 特性&#xff1a; ①不支持事務。 ②表級鎖定&#xff0c;并發性能大大降低。 ③讀寫互相阻塞。 適用場景&#xff1a; ①不支持事務。 ②并發相對較低&#xff0c;表鎖定。 ③執行大量select語句操作的表。 ④count(*)操作較快。 ⑤不支持外鍵。 注&#xff1a;查詢速…

Python--day60--一個簡單(不完整)的web框架

轉載于:https://www.cnblogs.com/xudj/p/10091775.html

activemq 發兩條只收到一條_淺談ActiveMQ與使用

更多大數據架構、實戰經驗&#xff0c;歡迎關注【大數據每日嗶嗶】&#xff0c;期待與你一起成長&#xff01;本文將介紹一下 ActiveMQ 的安裝、原理和簡單實戰。一、什么是消息中間件消息中間件顧名思義實現的就是在兩個系統或兩個客戶端之間進行消息傳送二、什么是ActiveMQAc…

php發送get、post請求的幾種方法

方法1: 用file_get_contents 以get方式獲取內容 <?php $urlhttp://www.domain.com/; $html file_get_contents($url); echo $html; ?>方法2: 用fopen打開url, 以get方式獲取內容<?php $fp fopen($url, r); stream_get_meta_data($fp); while(!feof($fp)) { $res…