淺談springboot @Repository與@Mapper的區(qū)別
今天在用springboot整合mybatis時,mapper接口上用的注解是以前學spring時用的@Repository注解,可一運行,就出現(xiàn)了錯誤。
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-11-19 20:29:20.989 ERROR 15260 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :***************************
APPLICATION FAILED TO START
***************************Description:
Field videoMapper in com.shenlei.service.impl.VideoServiceImpl required a bean of type 'com.shenlei.mapper.VideoMapper' that could not be found.

說是找不到mapper這個bean,于是翻翻之前學springboot的筆記,發(fā)現(xiàn)要用mappe這個注解,加了之后,果然就可以了。

于是總結(jié)一下@Repository 與 @Mapper的區(qū)別
1、@Repository
@Repository 是 Spring 的注解,用于聲明一個 Bean。@Repository單獨使用沒用??梢赃@樣理解,注解放在接口上本來就沒有意義,spring中在mapper接口上寫一個@Repository注解,只是為了標識,要想真正是這個接口被掃描,必須使用@MapperScannerConfigurer
<!-- 配置 Mapper 掃描器 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.shenlei.mapper"/> </bean>
這段配置會掃描com.shenlei.mapper包下所有的接口,然后創(chuàng)建各自的動態(tài)代理類。
與spring集成可分三個步驟:
1、把java類對應(yīng)的Mapper接口類納入spring總的IOC容器。
2、把Java類對應(yīng)的XML命名空間添加到Mybatis中的Configuration類中的mapperRegistry(用于管理Mybatis的Mapper)
3、使用spring中的IOC容器拓展FactoryBean獲取到Mapper的實例。(第一步納入spring只是接口)
2、 @Mapper
@Mapper是mybatis自身帶的注解。在spring程序中,mybatis需要找到對應(yīng)的mapper,在編譯時生成動態(tài)代理類,與數(shù)據(jù)庫進行交互,這時需要用到@Mapper注解

但是有時候當我們有很多mapper接口時,就需要寫很多@Mappe注解,這樣很麻煩,有一種簡便的配置化方法便是在啟動類上使
用@MapperScan注解。

這樣可以自動掃描包路徑下所有的mapper接口,從而不用再在接口上添加任何注解。
3、區(qū)別
相同點:
@Mapper和@Repository都是作用在dao層接口,使得其生成代理對象bean,交給spring 容器管理
對于mybatis來說,都可以不用寫mapper.xml文件
不同點:
1、@Mapper不需要配置掃描地址,可以單獨使用,如果有多個mapper文件的話,可以在項目啟動類中加入@MapperScan(“mapper文件所在包”)
2、@Repository不可以單獨使用,否則會報錯誤,要想用,必須配置掃描地址(@MapperScannerConfigurer)
4、解決使用@mapper接口時,注入mapper爆紅問題

在idea中單獨使用@Mapper注解,在@Autowired時,idea會提示找不到bean,但是不影響運行,如果想消除爆紅,可以將@Mapper注解跟@Repository注解一起用,這樣便可消除爆紅

這樣便可消除爆紅
到此這篇關(guān)于淺談springboot @Repository與@Mapper的區(qū)別的文章就介紹到這了,更多相關(guān)springboot @Repository與@Mapper內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Spring Boot2中使用CompletableFuture的方法教程
這篇文章主要給大家介紹了關(guān)于在Spring Boot2中使用CompletableFuture的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧2019-01-01
Java使用fill()數(shù)組填充的實現(xiàn)
這篇文章主要介紹了Java使用fill()數(shù)組填充的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
SpringBoot?MP簡單的分頁查詢測試實現(xiàn)步驟分解
好久沒水后端的東西了,最近在做vue項目寫前端的代碼,所以cloud也停進度了,吃完飯突然記得我沒有在博客里寫分頁的東西,雖然項目中用到了,但是沒有拎出來,這里就拎出來看看2023-04-04
JavaWeb servlet實現(xiàn)下載與上傳功能的方法詳解
這篇文章主要介紹了JavaWeb servlet實現(xiàn)下載與上傳功能的方法,結(jié)合實例形式詳細分析了JavaWeb servlet實現(xiàn)下載與上傳功能的原理、實現(xiàn)方法與操作注意事項,需要的朋友可以參考下2020-04-04
springboot+Oauth2實現(xiàn)自定義AuthenticationManager和認證path
本篇文章主要介紹了springboot+Oauth2實現(xiàn)自定義AuthenticationManager和認證path,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09

