基于Spring整合mybatis注解掃描是否成功的問題
Spring整合mybatis注解掃描是否成功
IDEA spring整合mybatis會(huì)使用注解掃描的配置
<context:component-scan base-package="/>
不管是使用@ Component、@Service、@Controller還是Repository,都是spring ioc操作bean的注解,其實(shí)際功能都是一樣的,都是用來創(chuàng)建bean實(shí)例對象的。
正常情況下,如果自動(dòng)掃描陳宮,IDEA類的界面在左側(cè)會(huì)有綠色的C標(biāo)記,如圖所示。

AutoWired注解下面的類屬性左側(cè)也會(huì)有一個(gè)灰色的箭頭和綠色的圓的標(biāo)記,如果沒有配置成功,那么就不會(huì)有這兩個(gè)標(biāo)記。

對于沒有配置成功的情況,可以點(diǎn)擊Project Strcuture ,點(diǎn)擊modules,模塊的srping部分,點(diǎn)擊圖中的加號(hào),選擇模塊下面框里的所有xml文件,導(dǎo)入就可以了。

Mybatis注解@MapperScan掃描包報(bào):Invalid bound statement (not found)
前幾天,因?yàn)闊o知,將@MapperScan的路徑修改到dao的上一層,如下:

在此情況下,對dao層進(jìn)行Junit測試,測試通過;但對service層測試,則報(bào)錯(cuò),報(bào)錯(cuò)如下:

于是乎我就找了度娘,很多老鐵也給了各種解決方法(以下解決方法取自網(wǎng)絡(luò)):
1.檢查xml文件所在package名稱是否和Mapper interface所在的包名。
2.UserDao的方法在UserDao.xml中沒有,然后執(zhí)行UserDao的方法會(huì)報(bào)此。
3. UserDao的方法返回值是List<User>,而select元素沒有正確配置ResultMap,或者只配置ResultType。
4. 如果你確認(rèn)沒有以上問題,請任意修改下對應(yīng)的xml文件,比如刪除一個(gè)空行,保存,問題解決。
5.看下mapper的XML配置路徑是否正確
但是我沒有在上面的描述中解決我所報(bào)的錯(cuò)誤,而我又是用springboot的注解模式的,于是我就對報(bào)錯(cuò)中的cachedMapperMethod
進(jìn)行debug測試,找到了問題所在。
通過Junit測試dao層,得到debug相關(guān)信息,并沒有任何異常,如下:

通過Junit測試service層,得到debug相關(guān)信息,如下所示,發(fā)現(xiàn)了問題所在,service接口也被mybatis接管了,而@MapperScan
作用:指定要變成實(shí)現(xiàn)類的接口所在的包,然后包下面的所有接口在編譯之后都會(huì)生成相應(yīng)的實(shí)現(xiàn)類。

總結(jié)
使用Mybatis的注解@MapperScan需要制定到項(xiàng)目中的dao層,避免其他的接口也被接管了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot統(tǒng)一API響應(yīng)結(jié)果封裝的示例詳解
在Spring Boot項(xiàng)目中,統(tǒng)一API響應(yīng)結(jié)果封裝是一種常用的技術(shù)實(shí)踐,旨在提高開發(fā)效率、降低代碼重復(fù)率,并提供一致的API響應(yīng)格式,從而簡化前后端交互和錯(cuò)誤處理,感興趣的小伙伴可以了解下2025-03-03
Java 實(shí)戰(zhàn)項(xiàng)目基于遺傳算法學(xué)校排課系統(tǒng)的實(shí)現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Springboot+Maven+mybatis+Vue+Mysql實(shí)現(xiàn)一個(gè)基于遺傳算法的學(xué)校排課系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11
go語言題解LeetCode88合并兩個(gè)有序數(shù)組示例
這篇文章主要為大家介紹了go語言題解LeetCode88合并兩個(gè)有序數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
簡單學(xué)習(xí)Java抽象類要點(diǎn)及實(shí)例
這篇文章主要介紹了Java抽象類要點(diǎn)及實(shí)例,有需要的朋友可以參考一下2014-01-01
Spring注解@Configuration和@Component區(qū)別詳解
@Component和@Configuration都可以作為配置類,之前一直都沒覺得這兩個(gè)用起來有什么差別,可能有時(shí)程序跑的和自己想的有所區(qū)別也沒注意到,下面這篇文章主要給大家介紹了關(guān)于Spring注解@Configuration和@Component區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-04-04
spring boot項(xiàng)目如何采用war在tomcat容器中運(yùn)行
這篇文章主要介紹了spring boot項(xiàng)目如何采用war在tomcat容器中運(yùn)行呢,主要講述將SpringBoot打成war包并放入tomcat中運(yùn)行的方法分享,需要的朋友可以參考下2022-11-11
IDEA中啟動(dòng)多個(gè)SpringBoot服務(wù)的實(shí)現(xiàn)示例
本文主要介紹了IDEA中啟動(dòng)多個(gè)SpringBoot服務(wù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08

