已解决:IDEA中@Autowired自动注入MyBatis Mapper报红警告的几种解决方法

这篇具有很好参考价值的文章主要介绍了已解决:IDEA中@Autowired自动注入MyBatis Mapper报红警告的几种解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天在使用 IDEA 使用 MyBatis 的时候遇到了这种情况:

已解决:IDEA中@Autowired自动注入MyBatis Mapper报红警告的几种解决方法,intellij-idea,mybatis,java

可以看到 userMapper 下有个红色的波浪警告,虽然代码没有任何问题,能正常运行,但是这个红色警告在这里杵着确实让人很窝心。

于是我在网上找了找,最终明白了原因所在:

  • 因为 IDEA 可以智能的理解上下文,然而 UserMapper 这个接口是 MyBatis 的 IDEA 理解不了。
  • @Autowired 注解,默认情况下要求依赖对象(也就是 userMapper )必须存在。而 IDEA 认为这个对象的实例/代理是个 null ,所以就友好地给个提示。

然后最终的解决方案总结了几个,按需使用把:

方法1:为 @Autowired 注解设置 required = false

使用 @Autowired 注解时,若希望允许 null 值,可设置 required = false,像这样:

1 @Autowired(required = false)
2 private UserMapper userMapper;

这样就不会有警告了。原因很好理解:IDEA 认为 userMapper 是个 null ,给了警告;加上 required = false 后,使用 @Autowired 注解不再去校验 userMapper 是否存在了。也就不会有警告了。

总结:

这种方式有点蛋疼。一个庞大的既有项目,可能到处都在引用 Mapper,总不能到处都补上 required = false 吧……而且对于新手/新员工,很难一眼看懂加 required = false 属性只是为了解决 IDEA 的警告。

方法2:使用 @Resource 替换 @Autowired

像这样:

@Resource
private UserMapper userMapper;

这样也不会再有讨厌的警告。如果你对原因感兴趣,不妨了解一下《@Autowired 与@Resource的区别》。

总结:

这种方式挺赞,但如果一个项目已经大量使用 @Autowired ,然后为了个警告到处改成 @Resource ,也有点蛋疼。

方法3:在 Mapper 接口上添加 @Repository 注解

@Repository
public interface UserMapper extends Mapper<User> {

}
这样能让你的
@Autowired
private UserMapper userMapper;
不再报红。

当然,如果你用 @Component 替换 @Repository 也是可以的。原理大致:IDEA 不是认为 userMapper 是个 null 嘛…加个 @Repository 注解骗一下 IDEA 就OK了……

总结:

这种方式比较赞,改动小,也简单,我比较喜欢。

方法4:用 Lombok


@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class TestService {

    private final UserMapper userMapper;
    ...

}

方法5:把 IDEA 的警告关掉。

个人没试过,也没有动力去试。没有提示的 IDEA 是没有灵魂的,我从来不去修改 IDEA 的任何警告设置。

方法6:安装 mybatis plugin 即可解决该问题。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!
已解决:IDEA中@Autowired自动注入MyBatis Mapper报红警告的几种解决方法,intellij-idea,mybatis,java文章来源地址https://www.toymoban.com/news/detail-828930.html

到了这里,关于已解决:IDEA中@Autowired自动注入MyBatis Mapper报红警告的几种解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决自动注入Mapper找不到这个bean@Repository作用

    在没有添加@Repository时,idea会报警告,提示找不到这个bean,可以直接忽略即可。 不添加@Repository不会影响代码运行  当我们在对应Mapper中添加@Repository后 对应的userMapper不再爆红     @Repository的作用: @Repository 注解组件可以 将持久层做一个标记,自动处理数据库操作产生的

    2024年02月12日
    浏览(35)
  • 使用 @Autowired 为什么会被 IDEA 警告,应该怎么修改最佳?

    # 问题原因 关于这个问题,其实答案相对统一,实际上用大白话说起来也容易理解。 1.初始化问题 先看一下Java初始化类的顺序:父类的静态字段 父类静态代码块 子类静态字段 子类静态代码块 父类成员变量 父类构造代码块 父类构造器 子类成员变量 子类构造代码块 子类构

    2024年02月13日
    浏览(35)
  • mybatis警告: No MyBatis mapper was found in ‘[com.**]‘ package. Please check your configuration.

    出现的错误No MyBatis mapper was found    解决办法:  在你的启动类上加上 MapperScan 注解,里面写上你的dao 目录,如果存在多个可以使用 * 号代替,或者在中括号中使用 逗号隔开写多个比如:  使用mybatis的话需要在 application.yml 或application.peoperties 文件里 使其项目加载的时候加

    2024年02月11日
    浏览(37)
  • 【问题记录】IDEA Mybatis *Mapper.xml 中 sql 无提示、无高亮、格式化失效问题 (已解决)

    【 问题 】 先说版本,win 11,idea 2023.1 如标题,想去格式化mybatis中写的sql,但是ctrl alt L 一顿处理,其中的sql没有按照sql命令的格式去格式化,此外写sql 无提示也无高亮 【 问题示例 】 未格式化前,显然格式已经差不多了,按理来说再格式化也就稍微调整 但格式化的结果是

    2024年02月04日
    浏览(37)
  • Idea添加mybatis的mapper文件模版

    针对Java开发人员,各种框架的配置模版的确是需要随时保留一份,在使用的时候,方便复制粘贴,但是也依然不方便,我们可以给开发工具(IDE)中添加配置模版,这里我介绍下使用idea开发工具,如何添加mybatis的mapper配置模版(当然使用SpringBoot减少大量配置,但是定制化的

    2024年02月13日
    浏览(30)
  • @Autowired 注入为null 的原因与解决方式

    我们经常会通过@Autowired注解将某个类注到另一个类中,但是会发现注不进去,报NULL。 可能的原因有一下几种: (1)该类没有托管给spring 管理 一般在类的上面添加@Component 就可以了 (2)你的这个类有被new出来的实例的,new 过的对象不会交给Spring容器管理 所以里面的 ser

    2024年02月11日
    浏览(26)
  • 完美解决:IDEA中maven依赖报红

    已解决:IDEA中 maven依赖报红 已解决:父工程 dependencyManagement里面依赖 报红 目录 问题一 1.问题描述 2.解决过程 问题二 1.问题描述 2.解决过程 在做springcoud项目时,父项目依赖都没有问题,但写子项目的依赖时就爆红了 分析原因:首先遇到这样的问题,肯定是因为idea在maven仓

    2024年02月09日
    浏览(30)
  • 关于在 springboot 中使用 @Autowired 注解来对 TemplateEngine 进行自动装配时,无法注入的问题。

    本文是基于江南一点雨的 Spring Boot+Vue 系列视频教程第 三 章的第三节,详情参考Spring Boot+Vue系列视频教程 在观看学习这一节时,发现当进行手动渲染 Thymeleaf 模板时,通过 @Autowired 注解来对 TemplateEngine 进行自动装配时,发现 idea 对其显示 No beans of \\\'TemplateEngine \\\' type of found。

    2024年02月02日
    浏览(34)
  • idea写sql语句快捷键提醒,mapper注解开发,mybatis

    第一步:注入SQL语言 1.显示上下文操作(没有这个选项的话就选中sql然后直接alt+回车快捷键) 2.注入语言或引用 3.mysql 第二步:配置MySQL数据库连接 1.首先点击侧边的数据库,再点击上面的加号 2.点击数据源,然后找到MySQL并点击 3.配置数据库信息(填写账号密码后点击测试

    2024年01月16日
    浏览(35)
  • 解决IDEA中maven依赖报红的问题

    在使用IDEA进行编程时,发现maven依赖中有很多报红现象,如下图所示: 虽然不太影响项目运行,但也确实是个问题 原因:造成这种现象主要原因就是 由于网络原因导致没有将Maven的依赖下载完整 ,就出现很多以 .lastUpdated 结尾的文件 删除maven仓库所有以.lastUpdate结尾的文件,

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包