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 踩坑

SpringBootSpringBoot 入门

SpringBootSpringBoot自动装配原理解析

SpringBootSpringBoot自动装配原理解析

java 后台框架 支持APP接口调用 APP后台 手机后台框架java springmvc myb

01.springboot集成mybatis与jsp