满堂花醉三千客,一剑霜寒十四州。这篇文章主要讲述springboot中@Mapper和@Repository的区别相关的知识,希望能为你提供帮助。
@Mapper和@Repository是常用的两个注解,两者都是用在dao上,两者功能差不多,容易混淆,有必要清楚其细微区别;
区别:
@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中:如下,在启动类中配置扫描地址:
@SpringBootApplication//添加启动类注解 @MapperScan("com.xz.springboot.mapper")//配置mapper扫描地址 public class application { public staticvoid main(String[] args) { SpringApplication.run(application.class,args); } }
@Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。
也就是@Repository多了一个配置扫描地址的步骤;
补充:
如果在接口上@Mapper,然后再在 xml中的namespace指向mapper,那么spring就能动态生成一个Mapper的bean,然后你在serviceImpl中的
@Autowired
pravate XXXMapper xxmapper;
【springboot中@Mapper和@Repository的区别】就会被这个bean注进去。
如果在DaoImpl中加了@Repository,那么在spring的扫包机制下,也会生成这个dao的bean,注入你serviceImpl中的
@Autowired
private xxxDao xxxdao;
中去。这个机制就像@controller,@Service什么的一样的。
最后,一般不用@Repository,在spring boot中通常用@Mapper
推荐阅读
- 安卓各布局优缺点
- Android手机测试环境搭建
- callapply与bind的区别
- 一路踩坑,搭建的Appium自动化测试环境
- uni-app的scroll-view组件的使用体验
- Android事件传递机制
- Android DJI Mobile-SDK 开发
- Mapped Statements collection does not contain value for xxx.xxx 错误原因&解决方案
- Apple SIP简介及在Clover中如何控制