springboot中@Repository 和 @Mapper的区别

在springboot中他们两都是数据访问层的注解(在定义方面)
@Repository:

  1. @Repository 注解通常用于对 DAO(Data Access Object)组件进行标识。

    • 它告诉 Spring 框架,被注解的类是用于数据访问的组件,可以通过 Spring 的组件扫描机制自动注册为 Spring Bean,并且可以将底层的数据访问异常转换为 Spring 的数据访问异常类型。
    • 一般情况下,@Repository 注解用于标识对数据库的访问,例如对数据库表的增删改查操作。

    @Mapper
    2.@Mapper 注解通常用于标识 MyBatis 的 Mapper 接口。

  • 在使用 MyBatis 框架时,我们需要创建 Mapper 接口来定义数据库操作的方法,而使用 @Mapper 注解可以将这些接口标识为 MyBatis 的映射器接口,使其能够被 MyBatis 自动扫描并注册为映
    射器。
  • 在整合 MyBatis 或 MyBatis-Plus 框架时,我们会用到 @Mapper 注解来标识 Mapper 接口,使其成为 Spring 容器中的 Bean。

第一个问题:实际情况下他们的区别?
实际情况下,@Repository 和 @Mapper 注解的区别可以通过以下案例来说明:

假设我们有一个名为 "User" 的实体类,以及一个对数据库进行操作的接口。

使用 @Repository 注解:
java

@Repository
public interface UserRepository {
    User findById(Long id);
    void save(User user);
    void deleteById(Long id);
}

在这个例子中,我们使用 @Repository 注解标识了 UserRepository 接口。这个接口主要用于定义与数据库进行交互的方法,如根据用户 id 查询用户、保存用户、删除用户等操作。

使用 @Mapper 注解:
java

@Mapper
public interface UserMapper {
     User findById(Long id);
     void save(User user);
     void deleteById(Long id);
 }

在这个例子中,我们使用 @Mapper 注解标识了 UserMapper 接口。这个接口同样用于定义与数据库进行交互的方法,如根据用户 id 查询用户、保存用户、删除用户等操作。

在实际情况下,@Repository 注解和 @Mapper 注解的区别可以总结如下:

@Repository 注解是 Spring 框架提供的注解,用于标识数据访问组件,包括对数据库的访问。它主要用于与底层数据访问框架(如 JPA、Hibernate)一起使用,对数据访问层进行标识和异常转换。
@Mapper 注解是 MyBatis 框架提供的注解,用于标识 Mapper 接口,定义数据库操作方法。它主要用于与 MyBatis 或 MyBatis-Plus 框架一起使用,将这些接口作为映射器进行数据库操作。
总的来说,@Repository 注解更通用,可以与不同的数据访问框架一起使用,而 @Mapper 注解更专注于与 MyBatis 框架一起使用,并且主要用于标识 Mapper 接口。

posted @   xjhname1  阅读(489)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示