久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

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

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

瀏覽:62日期: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
相關文章:
主站蜘蛛池模板: 和静县| 雷州市| 乌拉特前旗| 安泽县| 嘉禾县| 抚松县| 卫辉市| 永仁县| 鄂托克前旗| 贵定县| 琼结县| 桂林市| 柘城县| 松阳县| 高雄县| 安新县| 隆昌县| 张家口市| 额尔古纳市| 宕昌县| 平泉县| 同仁县| 内黄县| 威远县| 图片| 大同市| 乐陵市| 衡山县| 永年县| 布尔津县| 昌乐县| 景宁| 陇西县| 九龙城区| 米脂县| 南投市| 镇江市| 略阳县| 砚山县| 开远市| 太白县|