Spring整合mybatis注解掃描是否成功
IDEA spring整合mybatis會使用注解掃描的配置
<context:component-scan base-package="/>
不管是使用@ Component、@Service、@Controller還是Repository,都是spring ioc操作bean的注解,其實(shí)際功能都是一樣的,都是用來創(chuàng)建bean實(shí)例對象的。
正常情況下,如果自動掃描陳宮,IDEA類的界面在左側(cè)會有綠色的C標(biāo)記,如圖所示。
AutoWired注解下面的類屬性左側(cè)也會有一個灰色的箭頭和綠色的圓的標(biāo)記,如果沒有配置成功,那么就不會有這兩個標(biāo)記。
對于沒有配置成功的情況,可以點(diǎn)擊Project Strcuture ,點(diǎn)擊modules,模塊的srping部分,點(diǎn)擊圖中的加號,選擇模塊下面框里的所有xml文件,導(dǎo)入就可以了。
Mybatis注解@MapperScan掃描包報:Invalid bound statement (not found)
前幾天,因?yàn)闊o知,將@MapperScan的路徑修改到dao的上一層,如下:
在此情況下,對dao層進(jìn)行Junit測試,測試通過;但對service層測試,則報錯,報錯如下:
于是乎我就找了度娘,很多老鐵也給了各種解決方法(以下解決方法取自網(wǎng)絡(luò)):
1.檢查xml文件所在package名稱是否和Mapper interface所在的包名。
2.UserDao的方法在UserDao.xml中沒有,然后執(zhí)行UserDao的方法會報此。
3. UserDao的方法返回值是List<User>,而select元素沒有正確配置ResultMap,或者只配置ResultType。
4. 如果你確認(rèn)沒有以上問題,請任意修改下對應(yīng)的xml文件,比如刪除一個空行,保存,問題解決。
5.看下mapper的XML配置路徑是否正確
但是我沒有在上面的描述中解決我所報的錯誤,而我又是用springboot的注解模式的,于是我就對報錯中的cachedMapperMethod
進(jìn)行debug測試,找到了問題所在。
通過Junit測試dao層,得到debug相關(guān)信息,并沒有任何異常,如下:
通過Junit測試service層,得到debug相關(guān)信息,如下所示,發(fā)現(xiàn)了問題所在,service接口也被mybatis接管了,而@MapperScan
作用:指定要變成實(shí)現(xiàn)類的接口所在的包,然后包下面的所有接口在編譯之后都會生成相應(yīng)的實(shí)現(xiàn)類。
總結(jié)
使用Mybatis的注解@MapperScan需要制定到項(xiàng)目中的dao層,避免其他的接口也被接管了。
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/Tec_Xie/article/details/119208155