Spring中@Mapper和@Repository的区别与使用

发布时间 2023-11-23 14:38:26作者: 爱睡懒觉的我

本文根据文章:https://blog.csdn.net/m0_45210394/article/details/126223145 进行修改

@Mapper是mybatis的注解,标注在dao层接口上,可以通过动态代理生成接口的实例bean(编译之后能生成相应的接口实现类)

@Repository是spring的注解,也标注在dao层接口上,启动类需要加@MapperScan包扫描,生成对应的bean,加了@MapperScan就相当于给包中的接口都加上了@Mapper,同时@Repository还有消除“注入”的错误提示的作用

有错误提示的就是没加@Repository,这是因为spring的自动扫描,而@Mapper不是spring的注解,所以有无法注入的提示。但是这个影响不大,有@Mapper或@MapperScan就可以生成bean。(IDEA 会提示错误,但是不影响运行)

项目中最好是分别在启动类和Mappr接口加上@MapperScan注解和@Repository注解的搭配使用,这样将会自动扫描所有mapper接口生成实现类,不需要为每个mapper接口单独加@Mapper注解,还能够消除“注入”的错误提示的作用

总结
1、@Repository是spring的注解,@Mapper是mybatis的注解。
2、@Repository与@Mapper都可以使用,二者可以同时出现,也可以单一使用。
3、单独使用@Repository,需要配合使用MapperScannerConfigurer或者@MapperScan注解。
4、单独使用@Mapper时,可能会在编辑器出现警告,不影响程序运行。可以配合使用@Repository消除警告。(也可以在编辑器中设置忽略这种警告)