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;@Autowiredpublic TestService(CashTicketMapper cashTicketMapper;) {this.cashTicketMapper= cashTicketMapper;}
}

但如果自己手寫成Lombok生成的代碼,IDEA依然會給你報警告 。我猜,應該是IDEA的Lombok插件把IDEA搞懵逼了…所以不提示了…

方法5:把IDEA的警告關閉掉

這個方法比較不推薦,感覺沒有提示的IDEA是沒有靈魂的,所以不推薦。我也從來不去修改IDEA的任何警告設置。

但是大家可以按照下圖去試試
在這里插入圖片描述

好了,以上就是 idea 注入mapper報錯報紅的幾種解決方案,希望對你有所幫助~

方法6:不用管他

這只是一個提示,并不影響程序運行,如果沒有強迫癥的話,可以不用管他。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530146.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530146.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530146.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java 調用對象的方法_JAVA調用對象方法的執行過程

JAVA調用對象方法的執行過程:①.編譯器查看對象的聲明類型和方法名。假設調用x.f(parameter), 且隱式參數x聲明為C類型的對象,有可能在C對象中存在多個參數類型和參數個數不同的f的方法{例如:f(int)、f(int,String)和f(String)},…

java類默認權限_Java 訪問權限控制以及類初始化順序

一. Package在一個項目中,不可以有相同的兩個包名package語句必須是文件中除注釋外第一句程序代碼,否則不能通過編譯。二. Java訪問權限概述類成員:對于一個類,其成員(包括成員變量和成員方法)能否被其他類所訪問,取決…

java http頭 字符串轉日期_springboot~DTO字符字段與日期字段的轉換問題

不會自動轉換string與date主要是這個意思,前端提交的JSON里,日期是一個字符串,而對應后端的實體里,它是一個Date的日期,這兩個在默認情況下是不能自動轉換的,我們先看一下實體實體public class UserDTO {pr…

java super extends_Java繼承和super的用法

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓繼承的關鍵字:extends格式如下: class 子類名 extends父類名{...}例如學生是繼承人類這一父類的.class student extends person{...}如果一個類的聲明沒有使用關鍵字extends,則這個類默認是繼承Object類的.Object是所有類的父類.Ob…

比較abc大小的java_比較abc大小java

比較abc大小java[2021-02-09 04:04:20] 簡介:php去除nbsp的方法:首先創建一個PHP代碼示例文件;然后通過“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推薦:《PH…

海天食品的java開發工作如何_再三個月就秋招了,我想找一份java開發工作,現在應該怎么準備一下?...

在找工作之前,大家都要做一些準備工作,java開發也是如此掌握核心JavaSE首先,從核心Java(JavaSE)開始學習,盡可能地掌握它。你應該了解和掌握一些基本概念,如循環,數組,運算符等等。此外&#xf…

java udp簡單聊天程序_Java基于UDP協議實現簡單的聊天室程序

最近比較閑,一直在抽空回顧一些java方面的技術應用。今天沒什么事做,基于udp協議,寫了一個非常簡單的聊天室程序。現在的工作,很少用到socket,也算是對java網絡編程方面的一個簡單回憶。先看一下效果:實現的…

java9 反應編程_Java9第四篇-Reactive Stream API響應式編程

file我計劃在后續的一段時間內,寫一系列關于java 9的文章,雖然java 9 不像Java 8或者Java 11那樣的核心java版本,但是還是有很多的特性值得關注。期待您能關注我,我將把java 9 寫成一系列的文章,大概十篇左右。Java 9的…

bb10系統支持java嗎_黑莓BB10怎么樣 BlackBerry 10系統好用嗎?

曾幾何時黑莓Blackberry OS是一款十分受用戶歡迎的手機系統,不過隨著手機系統市場已經被蘋果iOS、谷歌安卓、微軟Windows Phone三分天下,致使曾經的黑莓帝國逐漸淪陷,體驗和性能都已經明顯跟不上iOS與安卓等系統的腳步了,也因為如…

java中興參與實參相同_中興通訊_傳輸SDH試題(含答案)

中興傳輸SDH試題一、單項選擇題(每小題2分,共30分)1、在SDH系統中, RSOH指(A)。A.再生段開銷B.復用段開銷C.再生段通道開銷D.復用段通道開銷2.、同步數字體系SDH具有(A)幀結構。A.塊狀B.串行C.鏈形D.三維3、管理指針單元的作用是(A)。A、用來指示信息凈負荷的第一個…

php 正則提取url,php 正則表達式提取網頁超級鏈接url的函數

function match_links($document) {preg_match_all("]))[^>]*>?(.*?)isx",$document,$links);while(list($key,$val) each($links[2])) {if(!empty($val))$match[link][] $val;}while(list($key,$val) each($links[3])) {if(!empty($val))$match[link][] …

php array colum,php5.5新數組函數array_column使用

array_column 用于獲取二維數組中的元素(PHP 5 > 5.5.0),但我們有時候需要在低版本中使用,那么就可以使用下面的代碼即可PHP5.5發布了,其中增加了一個新的數組函數array_column,感覺不錯的!但是低版本PHP要使用&…

php 將字符串打亂,PHP內部實現打亂字符串順序函數str_shuffle的方法

前言2019年春節已過,今天是上班第一天,還得翻一翻之前沒有看完的PHP源碼。今天聊的是字符串順序打亂函數str_shuffle。這個函數本身使用頻率并不高。但是,其內部實現還是非常有趣的。str_shuffle() 函數隨機地打亂字符串中的所有字符。要注意…

php+js+return+true,js中return、return false、return true的區別

1.語法及返回方式①返回控制與函數結果語法為:return 表達式;語句結果函數的執行,返回調用函數,而且把表達式的值作為函數結果返回出去②返回控制無函數結果語法為:return;在大多數情況下,為事件處理函數如果讓其返回false,可以防止默認的事件行為.例如,默認情況下,點擊一個標簽…

php strlen遇0截斷,聊下php下的截斷問題

0x01 起因有天在群里說起上傳的%00截斷的一些問題,就想起之前自己在這個問題踩過坑,想起了自己曾經的flag說要寫文章,一直沒寫,現在來填坑了。0x02 經過源碼理解1234//test.phpinclude "1.txt\000.jpg";?>1234//1.t…

test.php.bak,記一次phpmyadmin 4.8.1 遠程文件包含漏洞(BUUCTF web)

題目很簡單,一個滑稽打開源碼,發現存在source.php文件于是訪問文件,發現出現一串php源碼提示存在hint.php,于是訪問發現一句話flag not here, and flag in ffffllllaaaagggg再回過頭來觀察source.php明顯是一道代碼審計的問題&…

php中files和FILRS,php獲取文件內容最后一行示例

php獲取文件內容最后一行示例復制代碼 代碼如下:$rs README.md;$fp fopen($rs, r);fseek($fp,-1,SEEK_END);$s ;while(($c fgetc($fp)) ! false){if($c "\n" && $s) break;$s $c . $s;fseek($fp, -2, SEEK_CUR);}fclose($fp);echo $s;exit;時間&#x…

php 實現貪吃蛇游戲,C++實現簡單貪吃蛇游戲

我大概在一個多月前把自己上學期寫的c代碼的貪吃蛇游戲push到csdn上,并且說c風格的貪吃蛇寫起來有些麻煩(貪吃蛇游戲的c語言實現),準備用面向對象的c再寫一遍。現在我們專業恰好剛教完了c,學校也布置了一道簡單的貪吃蛇的編程題目&#xff0c…

java中的斜杠和反斜杠,老生常談java路徑中的反斜杠和斜杠的區別

JAVA中的斜杠有正斜杠與反斜杠之分,正斜杠,一般就叫做斜杠,符號為“/”;反斜杠的符號為“\”。斜杠(/)在JAVA中沒有什么特別的意義,就是代表一個字符‘/;反斜杠(\)則不然,它和緊跟著它的那個字符構成轉義字…

小程序 php cookie,微信小程序使用Cookie

微信小程序使用Cookie微信小程序不支持Cookie,因此,需要借助小程序的數據緩存來實現Cookie.環境: mpvue fly.js登錄成功后,在處理登錄驗證的method里,加入以下內容保存Cookie:wx.setStorageSync("sessionid",response.headers["set-cookie"][0])我對fly.j…