SpringBoot中Mapper注解

    在用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的应用的搭建和开发过程从而是开发人员不需要在使用样板化的配置

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值