SpringBoot中Mapper注解

在SpringBoot中,使用@Autowired注解时遇到找不到bean的问题,通常是因为缺少对Mapper接口的正确注解。@Mapper用于MyBatis扫描,不需要Spring配置,通过mapper.xml与接口匹配生成Bean。而@Repository是Spring注解,需配合Spring配置。同时使用两者可以兼顾提示和功能。本文探讨了这两个注解的区别和应用场景。
摘要由CSDN通过智能技术生成

    在用idea写一个实现类时引用了mapper类的来调用dao层的处理,使用@Autowired注解时被标红线,找不到bean。

    解决办法:在mapper的dao层加@mapper或者@repository注解。

    这两种注解的区别在于:

    1、使用@mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。

    2、@repository则需要在Spring中配置扫描包地址,然后生成dao层的bean,之后被注入到ServiceImpl中

Spring在扫描注解时,取消了扫描抽象类和接口,所以无法找到你用@reponsitory注解的dao接口。如果在idea中使用@Mapper注解,在@Autowired时,idea会提示找不到bean,但是不影响运行。但是我看着又难受,百度一堆规避的方法,包括设置改为warning等,后来发现一个骚操作,可以把两个注解同时使用,这样,@Mapper可以让你找到bean,@reponsitory可以帮你治疗强迫症。

Mapper只是用来扫描用的,当然你可以去掉,在springboot的启动类上@MapperScan(basePackages = {"com.xxx.xxx"})来扫描

@Mappler是mybatis注解,mybatis运行时需要能找到到mapper文件,然后运行时构建代理类来完成功能,和Spring没有关系。你应该用@MapperScan来扫描mapper接口,让mybatis能找倒这些接口。然后Spring的@ComponetScan也要扫描这些接口,这样Spring才能管理这些mybatis生成的代理类。 @Repository是Spring的注解,而且注解放在接口上也没用也没有意义。

springboot是一个简化的spring框架,他默认配置了很多框架的使用方法和参数用来简化spring的应用的搭建和开发过程从而是开发人员不需要在使用样板化的配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值