springBoot 中关于dao层的三个注解 @Repository @Mapper @MapperScan @Component 的区别和理解

  • Post author:
  • Post category:其他


原文链接:

https://blog.csdn.net/u013158317/article/details/104006164


我提取的精华:


总结

@Mapper 一定要有,否则 Mybatis 找不到 mapper。

@Repository 可有可无,可以消去依赖注入的报错信息。

@MapperScan 可以替代 @Mapper。

@Component 和 @Repository 效果都是一样的,只是为了声明为bean

1、

@Mapper

@Mapper 是 Mybatis 的注解,和 Spring 没有关系,@Repository 是 Spring 的注解,用于声明一个 Bean。

在 Spring 程序中,Mybatis 需要找到对应的 mapper,在编译的时候动态生成代理类,实现数据库查询功能,所以我们需要在接口上添加 @Mapper 注解。

2 –

@Repository


正如上面说的,@Repository 用于声明 dao 层的 bean,如果我们要真正地使用 @Repository 来进行开发,那是基于代码的开发,简单来说就是手写 JDBC。

3 –

其他扫描手段


基于注解的开发也有其他手段帮助 Mybatis 找到 mapper,那就是 @MapperScan 注解,可以在启动类上添加该注解,自动扫描包路径下的所有接口。

@SpringBootApplication
@MapperScan("com.scut.thunderlearn.dao")
public class UserEurekaClientApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(UserEurekaClientApplication.class, args);
    }
}


使用这种方法,接口上不用添加任何注解。


4 – 总结

@Mapper 一定要有,否则 Mybatis 找不到 mapper。

@Repository 可有可无,可以消去依赖注入的报错信息。

@MapperScan 可以替代 @Mapper。

Mapper报假红打上@component