@Component 和@Mapper啥区别
时间: 2024-06-05 22:09:12 浏览: 99
@Component 和 @Mapper 都是 Spring 框架中的注解,但是它们的作用不同。
@Component 是一个通用的注解,表示被修饰的类是一个组件,可以被 Spring 容器所管理。通常情况下,我们使用 @Component 注解来标注 Service、Dao、Controller 等类,以便能够通过 Spring 的自动扫描机制来自动装配依赖。
@Mapper 是 MyBatis 框架中的注解,表示被修饰的接口是一个 MyBatis 的 Mapper 接口,用于标记数据访问层的接口,使其能够被 MyBatis 扫描并生成代理对象。在 MyBatis 中,我们可以通过 Mapper 接口来定义数据库的操作,通过 @Mapper 注解来标注 Mapper 接口,然后在 Service 层中注入 Mapper 接口的实现来完成数据访问操作。
因此,@Component 和 @Mapper 的作用不同,@Component 用于标注 Spring 容器管理的组件,@Mapper 用于标注 MyBatis 的 Mapper 接口。
相关问题
@Component @Mapper
在Spring框架中,`@Component`和`@Mapper`是两个非常常用的注解,分别用于定义组件和服务映射。
1. `@Component`: 这个注解用于标记一个Java类为Spring管理的组件或bean。当Spring容器启动时,它会自动扫描并注册带有`@Component`注解的类,将其作为依赖注入系统的一部分。这些类通常包含业务逻辑、数据访问层(如DAO接口)或者其他需要管理的单例实例。使用`@Component`可以方便地将类暴露给Spring,使得它们可以在应用程序中被其他服务调用。
2. `@Mapper`: 这个注解来自于MyBatis的Repository切面编程(Repository Pattern)扩展,它是由mybatis-spring-boot-starter这样的库提供的。当你在一个类上使用`@Mapper`时,Spring Boot会将这个类识别为MyBatis的一个映射器(Mapper),该类中的方法会被自动转换为SQL查询,并执行相应的数据库操作。`@Mapper`通常用于封装数据库访问,简化了数据库操作的编写和维护。
@Mapper @Component public interface LoginDao extends BaseMapper<Login> {
这段代码是一个Java接口,使用了MyBatis框架中的注解,其中@Mapper注解表示这个接口是一个Mapper接口,可以被MyBatis框架扫描并生成对应的Mapper实现类;@Component注解表示这个接口是一个Spring组件,可以被Spring框架扫描并进行依赖注入。
这个接口继承了BaseMapper接口,该接口是MyBatis-Plus框架提供的通用Mapper接口,可以自动实现一些常用的增删改查操作。Login是一个实体类,代表着一个登录记录,这个接口定义了一些操作这个实体类的方法。
阅读全文