@Mapper和Repository

在Java的Spring框架中,@Mapper@Repository注解虽然都用于标记类,但它们有不同的用途和背景。下面分别介绍这两个注解的用途和区别。

@Mapper

@Mapper注解主要用于MyBatis框架中,用于标记Mapper接口,即DAO(Data Access Object)层接口。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。@Mapper注解告诉MyBatis这个接口是一个Mapper接口,MyBatis在启动时会自动扫描这些接口,并生成对应的Mapper代理对象,以便在业务层中调用。

使用@Mapper注解后,你可以直接在接口中定义方法,MyBatis会根据方法名、参数等信息来找到对应的SQL语句并执行。这样做的好处是,你可以完全脱离实现类,直接通过接口进行编程,降低了代码的耦合度。

另外,Spring Boot与MyBatis整合时,通常会通过配置@MapperScan注解来指定Mapper接口所在的包路径,这样Spring Boot就会自动扫描这些包下的所有@Mapper注解的接口,并注册为Bean。

@Repository

@Repository注解是Spring框架中的一部分,用于标注在DAO层组件类上(虽然通常用在实现类上,而不是接口)。它表明该类的主要职责是访问数据库以执行数据访问操作。@Repository注解不仅具有将类标识为Bean的功能,还提供了额外的语义,即该Bean是一个数据访问对象(DAO)。

@Repository注解本身并不提供任何功能,但它可以让Spring框架的某些特性,如异常转换,更好地发挥作用。例如,当DAO层方法抛出运行时异常时,Spring可以自动将这些异常转换为DataAccessException类型的异常,这是一种更高级的异常处理方式,有利于上层调用者更统一地处理数据库访问异常。

区别

  • 用途@Mapper主要用于MyBatis框架中,标识Mapper接口;@Repository是Spring框架中的注解,用于标识DAO层组件。
  • 使用场景@Mapper主要用于MyBatis环境;@Repository可以在Spring框架的任何数据访问层组件上使用,不限于MyBatis。
  • 功能@Mapper主要功能是告诉MyBatis这是一个Mapper接口,需要被扫描和代理;@Repository除了标识Bean外,还提供了额外的语义支持,如异常转换等。

总结来说,@Mapper@Repository虽然都用于标记数据访问层的相关类,但它们的来源、用途和提供的特性有所不同。在Spring Boot与MyBatis整合的项目中,通常会同时使用这两个注解,以充分利用Spring和MyBatis的优势。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值