SpringBootSpringBoot集成MyBatis中@Mapper/@MapperScan和@Repository的区别
Posted The Gao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBootSpringBoot集成MyBatis中@Mapper/@MapperScan和@Repository的区别相关的知识,希望对你有一定的参考价值。
结论
@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。SpringBoot中与 @Mapper的工作重叠了,所以可有可无。
3.其他扫描手段
基于注解的开发也有其他手段帮助 Mybatis 找到 mapper,那就是 @MapperScan 注解,可以在启动类上添加该注解,自动扫描包路径下的所有接口。
@SpringBootApplication
@MapperScan("com.gzh.mapper")
public class Springboot01MybatisApplication
public static void main(String[] args)
SpringApplication.run(Springboot01MybatisApplication.class, args);
使用这种方法,接口上不用添加任何注解。
4.总结
@Mapper 一定要有,否则 Mybatis 找不到 mapper。
@Repository 可有可无,可以消去依赖注入的报错信息。
@MapperScan 可以替代 @Mapper。
以上是关于SpringBootSpringBoot集成MyBatis中@Mapper/@MapperScan和@Repository的区别的主要内容,如果未能解决你的问题,请参考以下文章
SpringbootSpringboot2 集成 redis 踩坑