首先@Repository和@Mapper 都用于Dao层
@Repository
public interface MemberMapper extends BaseMapper<Member> {}
@Mapper
public interface MemberMapper extends BaseMapper<Member> {}
@Repository 只能标注在 DAO 类上。这是因为该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。
@Repository 注解和 @Mapper注解一样,都是表明是数据接口层;
区别:
- @Mapper 加在 Dao层后,service类 @autowired idea会报红,提示找不到bean,但是不影响效果;
- @Repository 加在 Dao层后,需要在SpringBootApplication 类
加@MapperScan表明数据接口层包路径。 idea不会提示报红;
即:
- 单独使用@Mapper ,但是idea会提示错误信息,不影响效果;单独使用@MapperScan也可以,也会报错误,但不影响
- @Repository 需要和 @MapperScan
配合使用(或者其他的MapperScannerConfigurer),idea不会报红;