提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 1.@Repository的作用
- 1.1 含义
- 1.2 @Repository与@Service和@Component有什么区别?
- 1.3 使用场景
- ==单独使用@Repository,需要配合使用MapperScannerConfigurer或者@MapperScan注解==。
- 2.@Repository和@Mapper的异同
- 相同点
- 不同点
1.@Repository的作用
1.1 含义
@Repository是属于Spring的注解,它与@Service、@Controller都可以理解为扩展的@Component注解。它们的作用都是在类上实例化bean,即把当前类对象的实现类交给Spring容器进行管理。
@Repository注解的等效替换:
@Component("userDao")
//等效替换
@Repository("userDao")
//等效替换
<bean id="userDao" class="com.cdxy.dao.impl.UserDaoImpl"></bean>
@Repository是属于Spring的注解。它用来标注访问层的类(Dao层),它表示一个仓库,主要用于封装对于数据库的访问,换句话说,@Repository注解修饰哪个类表明这个类具有对数据库CRUD的功能,用在持久层的接口上。
1.2 @Repository与@Service和@Component有什么区别?
- @Repository作用如上所说。
- @Service注解用来标注服务层中的类,用于处理业务逻辑。在使用@Service注解标记的类中,通常会注入@Reposity的类。
- @Component注解是通用的注解,用来标记所有被spring容器管理的组件。在使用@Component注解标记的类中,通常会注入@Service和@Repository标记的类。
本质上都是把实例化对象交给spring管理。
1.3 使用场景
@Repository 作为spring的注解,他还能把所标注的类中抛出的数据访问异常封装为spring的数据访问异常类型。
单独的使用@Mapper注解的话,在idea中进行自动装配的时候,会出现警告
使用@MapperScan(“com.zyp.mapper”)或者@Mapper注解修饰持久层时,借助@autowire注入持久层对象则报错,报错如图
Spring Boot–08–Mybatis 之Mapper在IDEA中自动注入警告的解决方案
使用@Repository注解,效果如图
单独使用@Repository,需要配合使用MapperScannerConfigurer或者@MapperScan注解。
- @Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中。
- @Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。
2.@Repository和@Mapper的异同
相同点
两个都是注解在Dao上
不同点
- @Repository是spring的注解,@Mapper是mybatis的注解。
- @Repository与@Mapper都可以使用,二者可以同时出现,也可以单一使用。
- 单独使用@Repository,需要配合使用MapperScannerConfigurer或者@MapperScan注解。
3.1@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中。
3.2@Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。 - 单独使用@Mapper时,可能会在编辑器出现警告,不影响程序运行。可以配合使用@Repository消除警告。(也可以在编辑器中设置忽略这种警告)