浅谈springboot @Repository与@Mapper的区别

 更新时间:2022年03月11日 15:01:02   作者:轻舟渡沧海  
本文主要介绍了浅谈springboot @Repository与@Mapper的区别,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

今天在用springboot整合mybatis时,mapper接口上用的注解是以前学spring时用的@Repository注解,可一运行,就出现了错误。

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-11-19 20:29:20.989 ERROR 15260 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field videoMapper in com.shenlei.service.impl.VideoServiceImpl required a bean of type 'com.shenlei.mapper.VideoMapper' that could not be found.

在这里插入图片描述

说是找不到mapper这个bean,于是翻翻之前学springboot的笔记,发现要用mappe这个注解,加了之后,果然就可以了。

在这里插入图片描述

于是总结一下@Repository 与 @Mapper的区别

1、@Repository

@Repository 是 Spring 的注解,用于声明一个 Bean。@Repository单独使用没用。可以这样理解,注解放在接口上本来就没有意义,spring中在mapper接口上写一个@Repository注解,只是为了标识,要想真正是这个接口被扫描,必须使用@MapperScannerConfigurer

<!-- 配置 Mapper 扫描器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.shenlei.mapper"/>
</bean>

这段配置会扫描com.shenlei.mapper包下所有的接口,然后创建各自的动态代理类。
与spring集成可分三个步骤:
1、把java类对应的Mapper接口类纳入spring总的IOC容器。
2、把Java类对应的XML命名空间添加到Mybatis中的Configuration类中的mapperRegistry(用于管理Mybatis的Mapper)
3、使用spring中的IOC容器拓展FactoryBean获取到Mapper的实例。(第一步纳入spring只是接口)

2、 @Mapper

@Mapper是mybatis自身带的注解。在spring程序中,mybatis需要找到对应的mapper,在编译时生成动态代理类,与数据库进行交互,这时需要用到@Mapper注解

在这里插入图片描述

但是有时候当我们有很多mapper接口时,就需要写很多@Mappe注解,这样很麻烦,有一种简便的配置化方法便是在启动类上使
用@MapperScan注解。

在这里插入图片描述

这样可以自动扫描包路径下所有的mapper接口,从而不用再在接口上添加任何注解。

3、区别

相同点:

@Mapper和@Repository都是作用在dao层接口,使得其生成代理对象bean,交给spring 容器管理
对于mybatis来说,都可以不用写mapper.xml文件

不同点:

1、@Mapper不需要配置扫描地址,可以单独使用,如果有多个mapper文件的话,可以在项目启动类中加入@MapperScan(“mapper文件所在包”)
2、@Repository不可以单独使用,否则会报错误,要想用,必须配置扫描地址(@MapperScannerConfigurer)

4、解决使用@mapper接口时,注入mapper爆红问题

在这里插入图片描述

在idea中单独使用@Mapper注解,在@Autowired时,idea会提示找不到bean,但是不影响运行,如果想消除爆红,可以将@Mapper注解跟@Repository注解一起用,这样便可消除爆红

在这里插入图片描述

这样便可消除爆红

到此这篇关于浅谈springboot @Repository与@Mapper的区别的文章就介绍到这了,更多相关springboot @Repository与@Mapper内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot项目打包成jar包的图文教程

    springboot项目打包成jar包的图文教程

    有时候我们会用IDEA来开发一些小工具,需要打成可运行的JAR包,这篇文章主要给大家介绍了关于springboot项目打包成jar包的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • SpringBoot多controller添加URL前缀的实现方法

    SpringBoot多controller添加URL前缀的实现方法

    这篇文章主要介绍了SpringBoot多controller添加URL前缀的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Maven中pom.xml配置文件详细介绍

    Maven中pom.xml配置文件详细介绍

    这篇文章主要介绍了Maven中pom.xml配置文件详细介绍,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • MyBatis的SUM映射问题及解决

    MyBatis的SUM映射问题及解决

    这篇文章主要介绍了MyBatis的SUM映射问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • java学生信息管理系统MVC架构详解

    java学生信息管理系统MVC架构详解

    这篇文章主要为大家详细介绍了java学生信息管理系统MVC架构的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • SpringBoot后端验证码的实现示例

    SpringBoot后端验证码的实现示例

    为了防止网站的用户被通过密码典爆破,引入验证码的功能是十分有必要的,本文主要介绍了SpringBoot后端验证码的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • Java等待唤醒机制原理实例解析

    Java等待唤醒机制原理实例解析

    这篇文章主要介绍了Java等待唤醒机制原理实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 基于Spring整合mybatis的mapper生成过程

    基于Spring整合mybatis的mapper生成过程

    这篇文章主要介绍了Spring整合mybatis的mapper生成过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • jstack报错Unable to open socket file解决

    jstack报错Unable to open socket file解决

    这篇文章主要为大家介绍了jstack报错Unable to open socket file的解决方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • Java中重写和重载的区别及说明

    Java中重写和重载的区别及说明

    Java语言中的重载和重写是实现多态的两种方式,但他们的实现方式和规则有所不同,重载发生在一个类中,同名的方法如果有不同的参数列表,则视为重载,重写则发生在子类和父类之间,要求子类重写方法和父类被重写方法有相同的返回类型
    2024-10-10

最新评论