国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

淺談Springboot下引入mybatis遇到的坑點

瀏覽:63日期:2023-02-20 16:00:53
一、 springBoot + Mybatis

配置完成后,訪問數據庫遇到的問題

淺談Springboot下引入mybatis遇到的坑點

首先出現這個問題,肯定是xml文件與mapper接口沒有匹配上,甚至是xml文件根本沒有被掃描到。

于是會從配置上進行檢查:

1、 xml中的namespace命名是否與mapper接口路徑一致,需保證一致。

2、 application.properties或者application.yml文件中配置mybatis的屬性對否,如下:

淺談Springboot下引入mybatis遇到的坑點

第一行 typeAliasesPackage是實體類的包路徑;

第二行mapperLocations:是Mapper的xml文件存放的位置,當xml文件跟對應的Mapper接口處于同一位置的時候可以不用指定

該屬性的值。

3、 啟動類上加注解,如下:

淺談Springboot下引入mybatis遇到的坑點

推薦用這種方式掃描Mapper接口,另一種方式是在每一個mapper接口類上加注解

淺談Springboot下引入mybatis遇到的坑點

注意,上述兩種方式,必須有一種實現,不然無法啟動項目,會報mapper接口未注入,如下:

淺談Springboot下引入mybatis遇到的坑點

綜上,只要上面幾種情況都配置正確,一般就可以正常啟動,并訪問數據庫。

二、 springBoot + MybatisPlus

pom中需要修改包

淺談Springboot下引入mybatis遇到的坑點

我用同樣的原理,準備在springBoot中引入mybatisPlus,但是配置都檢查了,依舊報類似的錯誤:

淺談Springboot下引入mybatis遇到的坑點

于是根據報錯的信息,究其源碼:

1、 首先由于mybatis通過mapper接口來invoke具體的方法實現,其查詢的key是接口包名加方法名,如果找不到該key,就會報錯,具體代碼如下:

淺談Springboot下引入mybatis遇到的坑點

只有在configuration中找到了匹配的key,才會返回key對應的MappedStatement; 同樣調用selectById,可看到一下結果,能夠找到。很明顯而由于上面的selectById1方法是自定義實現的,其xml未被掃描到,還是配置的問題。

淺談Springboot下引入mybatis遇到的坑點

然后,再看源碼,為何configuration中找不到自定義的mapper方法,配置哪里有問題:

淺談Springboot下引入mybatis遇到的坑點 淺談Springboot下引入mybatis遇到的坑點

MybatisPlusAutoConfiguration是在啟動時,自動會讀取配置信息的,可以看到其中MybatisPlusProperties類型定義了前綴mybatis-plus,即只有前綴為mybatis-plus的配置信息才會被加載,而再看配置文件,如下,恍然大悟,mybatis的配置前綴寫錯了,修改成mybatis-plus,成功了!!!

淺談Springboot下引入mybatis遇到的坑點

后來發現,原來這跟開頭pom文件中導入的包版本有關系,

總結如下:

若使用的是mybatis,則要導入的包是下面這個,并且配置文件中mybatis的配置前綴是“mybatis”。

淺談Springboot下引入mybatis遇到的坑點

而若使用的是mybatis-plus,則需要導入的包是下圖,并且配置中mybatis的配置前綴是“mybatis-plus”。

淺談Springboot下引入mybatis遇到的坑點

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 长顺县| 黄陵县| 顺义区| 临西县| 东乌珠穆沁旗| 巍山| 米脂县| 长寿区| 绿春县| 舒兰市| 滨州市| 民和| 文水县| 建湖县| 青岛市| 锡林郭勒盟| 峨边| 长寿区| 喀什市| 象州县| 广灵县| 乳山市| 甘孜| 海淀区| 平果县| 临洮县| 札达县| 永仁县| 新化县| 静海县| 稷山县| 凌海市| 利川市| 安徽省| 高安市| 庄浪县| 武胜县| 土默特右旗| 高阳县| 永城市| 遵义县|