@Mapper,@MapperScan与@Repository区别
從mybatis3.4.0開始加入了@Mapper注解,它可以在編譯之后自動生成相應的接口實現類,不用再寫如下圖所示的mapper映射文件。
用@Mapper直接在接口中寫 ,編譯時自動生成實現類,具體寫法見下圖。
如果需要讓多個接口都變成實現類,用@Mapper一個個添加太麻煩,這時我們在Springboot啟動類添加@MapperScan,指定要掃描的mapper的包的路徑,然后包下面的所有接口在編譯之后都會生成相應的實現類,實現批量添加@Mapper注解。
根據百度結果,@Mapper = @MapperScan(自動掃描配置)+Repository,單獨有Mapper的時候,Autowired會報錯,但可以運行。
簡而言之,批量用@MapperScan,單個@Mapper。
注:
@MapperScan用來掃描定義包下的所有的接口,給接口都生成一個bean(經測試,即便bean已經存在,@MapperScan還是會將這些接口再注冊一個bean,導致出錯)。
其源碼里有個annotationClass,默認值是Annotation.classs。
Class<? extends Annotation> annotationClass() default Annotation.class;?注解如下所示加個參數,就能解決上面的問題。
@MapperScan(basePackages = "com.zhi.test", annotationClass = Mapper.class)? 經驗證,一些無關的接口不再注冊為一個bean。
(——引自關于MyBatis的@Mapper和@MapperScan注解的一點思考 - 玄同太子 - 博客園)
總結
以上是生活随笔為你收集整理的@Mapper,@MapperScan与@Repository区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 针对零基础的UE开发(05)
- 下一篇: Expected more than 1