淺談@mapper引入不到引入的是@MapperScan的問題
兩種防水都可以,但是使用方式不同。
@mapper需要mybatis和mybatis-spring的版本足夠的高才可以。
不然導(dǎo)入不到@mapper。
補充知識:關(guān)于MyBatis的@Mapper和@MapperScan注解的一點思考
最近有空回顧mybatis,想起@Mapper注解一直沒弄明白是干嘛的,代碼上的注釋寫的很簡單(Marker interface for MyBatis mappers),開發(fā)過程中也沒用到,但網(wǎng)上各種資料偶有出現(xiàn)他的身影。問了度娘,都沒講清楚,我決定自己思考下這個問題,看看他究竟是干嘛用的。
1、來源
Mapper來自mybatis-3.5.3.jar包
MapperScan來自mybatis-spring-2.0.3.jar包
2、作用
Mapper注解沒有被任何類接口引用,看不出來有何作用

MapperScan注解被MapperScannerRegistrar的registerBeanDefinitions方法所引用,目的是將basePackages定義的所有包下的所有接口生成一個org.apache.ibatis.binding.MapperProxy代理bean,這樣就可以用@Autowired注解進行裝配使用了。

3、疑問
Mapper注解沒有被任何類使用,那他用來干嘛的,MapperScan用來掃描定義包下的所有的接口,無論這個接口你的設(shè)計目的是用來干嘛的,他都會生成一個bean(經(jīng)測試,@Service實現(xiàn)的接口和@FeignClient注解的接口,即使他已經(jīng)都相關(guān)的程序注冊了一個bean,MapperScan還是會將這些接口再注冊一個bean,導(dǎo)致出錯)。
如此不合理的地方,到底是哪里出現(xiàn)問題?
4、我的思考
帶著上面的問題,我又在重新查看了@MapperScan,發(fā)現(xiàn)里面有個annotationClass,默認值是Annotation.classs。
Class<? extends Annotation> annotationClass() default Annotation.class;
假若我們的注解如此寫呢,是不是能解決上面的2個問題。
@MapperScan(basePackages = "com.zhi.test", annotationClass = Mapper.class)
經(jīng)驗證,Mapper找到了合理的使用,一些無關(guān)的接口也不再注冊為一個bean。
以上這篇淺談@mapper引入不到引入的是@MapperScan的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
修改xml文件再也不用重啟項目mybatis-xmlreload方法
這篇文章主要為大家介紹了修改xml文件再也不用重啟項目mybatis-xmlreload,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
Java泛型與數(shù)據(jù)庫應(yīng)用實例詳解
這篇文章主要介紹了Java泛型與數(shù)據(jù)庫應(yīng)用,結(jié)合實例形式詳細分析了java繼承泛型類實現(xiàn)增刪改查操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2019-08-08
springboot2版本無法加載靜態(tài)資源問題解決
這篇文章主要介紹了springboot2版本無法加載靜態(tài)資源問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
MyBatis-Plus實現(xiàn)對查詢結(jié)果進行分頁的基本步驟
MyBatis-Plus 是一個 MyBatis 的增強工具,在 MyBatis 的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生,MyBatis-Plus 支持多種數(shù)據(jù)庫的分頁查詢,其分頁功能是通過 Page 類實現(xiàn)的,本文介紹了使用 MyBatis-Plus 實現(xiàn)分頁查詢的基本步驟,需要的朋友可以參考下2024-08-08
java calendar 日期實現(xiàn)不斷加一天的代碼
這篇文章主要介紹了java calendar 日期實現(xiàn)不斷加一天的代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

