溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

@mapper無法引入怎么解決

發(fā)布時(shí)間:2020-10-26 16:12:06 來源:億速云 閱讀:848 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)@mapper無法引入怎么解決,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

兩種防水都可以,但是使用方式不同。

@mapper需要mybatis和mybatis-spring的版本足夠的高才可以。

不然導(dǎo)入不到@mapper。

補(bǔ)充知識:關(guān)于MyBatis的@Mapper和@MapperScan注解的一點(diǎn)思考

最近有空回顧mybatis,想起@Mapper注解一直沒弄明白是干嘛的,代碼上的注釋寫的很簡單(Marker interface for MyBatis mappers),開發(fā)過程中也沒用到,但網(wǎng)上各種資料偶有出現(xiàn)他的身影。問了度娘,都沒講清楚,我決定自己思考下這個(gè)問題,看看他究竟是干嘛用的。

1、來源

Mapper來自mybatis-3.5.3.jar包

MapperScan來自mybatis-spring-2.0.3.jar包

2、作用

Mapper注解沒有被任何類接口引用,看不出來有何作用

@mapper無法引入怎么解決

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

@mapper無法引入怎么解決

3、疑問

Mapper注解沒有被任何類使用,那他用來干嘛的,MapperScan用來掃描定義包下的所有的接口,無論這個(gè)接口你的設(shè)計(jì)目的是用來干嘛的,他都會生成一個(gè)bean(經(jīng)測試,@Service實(shí)現(xiàn)的接口和@FeignClient注解的接口,即使他已經(jīng)都相關(guān)的程序注冊了一個(gè)bean,MapperScan還是會將這些接口再注冊一個(gè)bean,導(dǎo)致出錯(cuò))。

如此不合理的地方,到底是哪里出現(xiàn)問題?

4、我的思考

帶著上面的問題,我又在重新查看了@MapperScan,發(fā)現(xiàn)里面有個(gè)annotationClass,默認(rèn)值是Annotation.classs。

Class<&#63; extends Annotation> annotationClass() default Annotation.class;

假若我們的注解如此寫呢,是不是能解決上面的2個(gè)問題。

@MapperScan(basePackages = "com.zhi.test", annotationClass = Mapper.class)

經(jīng)驗(yàn)證,Mapper找到了合理的使用,一些無關(guān)的接口也不再注冊為一個(gè)bean。

關(guān)于@mapper無法引入怎么解決就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI