Spring中究竟应该使用@Repository还是@Mapper?

使用注解开发Dao(Mapper)层的时候,常常会不知道应该如何选择这两个注解。


1 - @Repository

@Repository是属于Spring的注解,它与@Service、@Controller都可以理解为扩展的@Component注解。它们的作用都是在类上实例化bean,即把当前类对象的实现类交给Spring容器进行管理

@Repository注解的等效替换:

@Component("userDao")
//等效替换
@Repository("userDao")
//等效替换
<bean id="userDao" class="com.cdxy.dao.impl.UserDaoImpl"></bean>

如果我们不用@Repository来注解接口,我们可以使用其他方法注入这个接口的实现类?

方法一:在spring的配置文件中配置了MapperScannerConfigurer这个bean,它会扫描持久层接口创建实现类交给spring进行管理。

方法二:接口上使用了@Mapper注解。

方法三:springboot的启动类上使用了@MapperScan注解,和MapperScannerConfigurer作用一样。

注:以上方法在进行自动装配的时候,如果不使用@Repository注解,idea会报警告,提示找不到这个bean,可以直接忽略(不影响程序运行)。

2 - @Mapper

@Mapper是属于Mybatis的注解,在程序中,Mybatis需要找到对应的mapper,在编译的时候动态生成代理类,实现数据库查询功能。

@Mapper与@Repository注解的使用方式完全一样,但是如果只是单独的使用@Mapper注解会出现上面提到过的警告问题,在自动装配时如果出现警告可以同时使用@Repository注解。上方的方法一与方法三也可以替代@Mapper注解。

@Repository
@Mapper
public interface BookDao {
    //具体代码省略
}

3 - 总结

1.@Repository是Spring的注解,@Mapper是Mybatis的注解。

2.@RepoSitory与@Mapper都可以使用,二者可以同时出现也可以单一使用。

3.单独使用@Repository时,需要使用扫描(MapperScannerConfigurer或@MapperScan)。

4.单独使用@Mapper时,可能会出现警告,配合@Repository可以消除警告。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值