idea 注入mapper报错报红的几种解决方案

文章目录

  • 前言
  • 方法1:为 @Autowired 注解设置required = false
  • 方法2:用 @Resource 替换 @Autowired
  • 方法3:在Mapper接口上加上@Repository注解
  • 方法4:用Lombok
  • 方法5:把IDEA的警告关闭掉
  • 方法6:不用管他

前言

相信大家在使用idea的时候一定会遇到这样的问题,就是在service里注入mapper的时候,明明代码没有问题,也可以运行,但是idea它就是给你报个错,有个红色的波浪线在下面,这让人感觉很不舒服。怎么办呢?
在这里插入图片描述

先来大概说一下,产生这种现象的原因。idea其实是非常智能的,它可以理解Spring的上下文,然而 XxxxMapper 这种接口是Mybatis的,IDEA它理解不了。再加上 @Autowired 这个注解呢,它默认情况下要求依赖对象(也就是 XxxxMapper )必须存在,而IDEA认为这个对象的实例/代理是个null,所以就友好地给个提示,给你报个红~

今天就说一下以下几种解决方案

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

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

像这样:
在这里插入图片描述

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

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

方法2:用 @Resource 替换 @Autowired

像这样:
在这里插入图片描述

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

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

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

像这样:
在这里插入图片描述

这样也能让你的

 @Autowired
private StdNmRecordMapper stdNmRecordMapper;

不再报错。

当然,如果你用@Component替换@Repository也是可以的。原理大致:IDEA不是认为 userMapper 是个null…

加个@Repository注解或者@Component骗一下IDEA就OK了……

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

方法4:用Lombok

像这样:
在这里插入图片描述
Lombok生成的代码是这样的:

@Service
public class TestService {
    private CashTicketMapper cashTicketMapper;
    @Autowired
    public TestService(CashTicketMapper cashTicketMapper;) {
        this.cashTicketMapper= cashTicketMapper;
    }
}

但如果自己手写成Lombok生成的代码,IDEA依然会给你报警告 。我猜,应该是IDEA的Lombok插件把IDEA搞懵逼了…所以不提示了…

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

这个方法比较不推荐,感觉没有提示的IDEA是没有灵魂的,所以不推荐。我也从来不去修改IDEA的任何警告设置。

但是大家可以按照下图去试试
在这里插入图片描述

好了,以上就是 idea 注入mapper报错报红的几种解决方案,希望对你有所帮助~

方法6:不用管他

这只是一个提示,并不影响程序运行,如果没有强迫症的话,可以不用管他。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/264921.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统LVS+Keepalived群集

目录 一、概述 (一)群集特性 1.负载均衡 2.健康检查(探针) 3.故障转移 (二)Keepalived 1.作用 (1)支持故障自动转移 (2)支持节点健康状态检…

WebGL开发三维解剖学应用

开发基于 WebGL 的三维解剖学应用通常涉及以下步骤。这些步骤包括创建三维模型、整合交互性、优化性能等,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.三维模型创建: 首先&#xff0…

Pytorch项目,肺癌检测项目之二

diameter_dict{} with open(/xunlian/annotations.csv ,‘r’) as f: for row in list(csv.reader(f)[1:]): series_uid row[0] annotationCenter_xyz tuple([float(x) for x in row[1:4]]) annotationDiameter_mm float(row[4]) diameter_dict.setdefault(seri…

【GIS前言技术】甘肃积石山6.2级地震烈度图

12月18日23时59分,甘肃临夏州积石山县发生6.2级地震。地震发生后,应急管理部组织中国地震局派出地震现场工作队,依照《地震现场工作:调查规范》(GB/T 18208.3-2011)、《中国地震烈度表》(GB/T 17742-2020)&…

josef约瑟 电流继电器 RL-D1 电压AC220V 整定范围0-9.99AAC

系列型号 RL-D1型电流继电器; RL-D2型电流继电器; 基本参数 RL-D系列电流继电器用于发电机、变压器和输电线的过负荷和短路保护装置中作为启动元件。本继电器为集成电路型继电器,精度高、功耗小、动作时间快, 返回系数高、整定…

0.618算法和基于Armijo准则的线搜索回退法

0.618代码如下: import math # 定义函数h(t) t^3 - 2t 1 def h(t): return t**3 - 2*t 1 # 0.618算法 def golden_section_search(a, b, epsilon): ratio 0.618 while (b - a) > epsilon: x1 b - ratio * (b - a) x2 a ratio * (b - a) h_…

九:爬虫-MongoDB基础

MongoDB介绍 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其…

Java设计模式-原型模式

目录 一、克隆羊问题 二、传统方式解决 三、基本介绍 四、浅拷贝和深拷贝 (一)浅拷贝介绍 (二)深拷贝 五、原型模式深拷贝 (一)重写clone方法 (二)对象序列化 六、注意事项…

法线贴图实现地形模型皱褶、凹凸不平的纹理效果

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 法线贴图在3D建模中扮演着重要的角色,它通过模拟表面的微…

es倒排索引以及分词

单词词典(Term Dictionary)是倒排索引的重要组成记录所有文档的单词,一般都比较大 记录单词到倒排排列表的关联信息 倒排列表(Posting List)记录了单词对应的文档集合,由倒排索项( Posting )组成倒排索项( Posting)主要包含如下信息: 文档Id&#xff0c…

前端基础location的使用

概念 获取当前页面的地址信息,还可以修改某些属性,实现页面跳转和刷新等。 样例展示 window.location 含义.originURL 基础地址,包括协议名、域名和端口号.protocol协议 (http: 或 https:).host域名端口号.hostname域名.port端口号.pathname路…

postMessage——不同源的网页直接通过localStorage/sessionStorage/Cookies——技能提升

最近遇到一个问题,就是不同源的两个网页之间进行localstorage或者cookie的共享。 上周其实遇到过一次,觉得麻烦就让后端换了种方式处理了,昨天又遇到了同样的问题。 使用场景 比如从网页A通过iframe跳转到网页B,而且这两个网页…

[C语言]程序练习(一)

你好,这里是争做图书馆扫地僧的小白。 个人主页:争做图书馆扫地僧的小白_-CSDN博客 目标:希望通过学习技术,期待着改变世界。 目录 前言 一、常量练习 (一)整型常量 (二)浮点型常…

H266/VVC帧内预测编码

预测编码技术 预测编码(Prediction Coding)是指利用已编码的一个或多个样本值,根据某种模型或方法,对当前的样本值进行预测,并对样本真实值和预测值之间的差值进行编码。 视频中的每个像素看成一个信源符号&#xff…

点击筛选框动态增加 多条可输入Table列 以及通过操作数组改造数据

点击筛选框动态增加 多条可输入Table列 以及通过操作数组改造数据 <el-col :span"8" class"tab_group"><el-form-item label"动态筛选"><el-select v-model.trim"ruleForm.flowType" placeholder"请选择" …

什么是Vue的生命周期 ?

使用最多的&#xff1a; created&#xff1a;进行axiosmounted&#xff1a;挂载元素内dom节点的获取&#xff1b; 新老版本生命周期对比 区别: Componsition API中,生命周期是从vue中导出的,需要用到的要进行导入,setup除外 除setup外,其他的生命周期都是写在setup中 setu…

【XML】TinyXML 详解

1、简介 优点&#xff1a; TinyXML 是一个简单、小型的 C XML 解析器&#xff0c;可以轻松集成到项目中。 TinyXML 解析 XML 文档&#xff0c;并根据该文档构建可读取、修改和保存的文档对象模型 (DOM) TinyXML 是在 ZLib 许可下发布的&#xff0c;因此可以在开源或商业代码中…

非阻塞 IO(NIO)

文章目录 非阻塞 IO(NIO)模型驱动程序应用程序模块使用 非阻塞 IO(NIO) 上一节中 https://blog.csdn.net/tyustli/article/details/135140523&#xff0c;使用等待队列头实现了阻塞 IO 程序使用时&#xff0c;阻塞 IO 和非阻塞 IO 的区别在于文件打开的时候是否使用了 O_NONB…

使用宝塔面板部署前端项目到服务器

目录 文章目录 前言 一、第一步&#xff1a;创建文件夹 二、第二步&#xff1a;部署前端项目 三、第三步&#xff1a;打开防火墙 文章目录 前言第一步&#xff1a;创建文件夹第二步&#xff1a;部署前端项目第三步&#xff1a;打开防火墙总结 前言 在此之前&#xff0c;我…

Ubuntu 常用命令之 exit 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 exit命令在Ubuntu系统下用于结束一个终端会话。它可以用于退出当前的shell&#xff0c;结束当前的脚本执行&#xff0c;或者结束一个ssh会话。 exit命令的参数是一个可选的整数&#xff0c;用于指定退出状态。如果没有指定&#…