欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解讀@NotNull和@NonNull的區(qū)別及使用

 更新時間:2023年01月06日 11:07:52   作者:一瓶橄欖菜  
這篇文章主要介紹了解讀@NotNull和@NonNull的區(qū)別及使用,具有很好的參考價值,希望對大家有所幫助。

@NotNull和@NonNull區(qū)別及使用

區(qū)別

@NotNull在類字段中使用,表示該字段不能為空。它是 JSR303(Bean的校驗框架)的注解。

在調用controller的方法中加入@Valid就可以驗證該方法參數(shù)中該類的對應屬性是否為空,如果為空,注解中的提示信息會保存在result中。

@NonNull在方法或構造函數(shù)的參數(shù)上使用,表示該參數(shù)不能為空。

@NotNull使用

/**
?* user類
?*/
@Data
public class User {

? ? private int id;
? ? @NotNull(message = "babyId不能為空")
? ? private String babyId;
}
/**
?* controller的方法
?* controller方法要加上@Valid ,表示需要驗證!
?*/
?@PostMapping("getMyUser")
?@ResponseBody
?public Baby getBaby(@Valid @RequestBody User user){
??? ?return babyService.getBabyById(user.getBabyId());
?}

此時調用controller的getBaby方法時如果user中babyId為空,那么程序會報MethodArgumentNotValidException

獲取錯誤信息

將上面的getBaby改為下面的例子:

@PostMapping("getMyUser")
@ResponseBody
public Baby getBaby(@Valid @RequestBody User user,Errors errors){
? ? List<ObjectError> oes = errors.getAllErrors();
? ? for (ObjectError oe : oes) {
? ? ? ? String key = null;
? ? ? ? String msg = null;
? ? ? ? // 字段錯誤
? ? ? ? if (oe instanceof FieldError) {
? ? ? ? ? ? FieldError fe = (FieldError) oe;
? ? ? ? ? ? key = fe.getField();// 獲取錯誤驗證字段名
? ? ? ? } else {
? ? ? ? ? ? // 非字段錯誤
? ? ? ? ? ? key = oe.getObjectName();// 獲取驗證對象名稱
? ? ? ? }

? ? ? ? // 錯誤信息
? ? ? ? msg = oe.getDefaultMessage();
? ? ? ? System.out.println("key:"+key+";msg="+msg);
? ? }
? ? return babyService.getBabyById(user.getBabyId());
}

此時程序不會報錯,但是可以獲取錯誤信息:

key:babyId;msg=babyId不能為空

其他注解及解釋

除了@NotNull,還有其他類似的注解,都是在類字段上使用

  • @Null 被注釋的元素必須為null
  • @NotNull 被注釋的元素不能為null,可以為空字符串

*@AssertTrue 被注釋的元素必須為true

*@AssertFalse 被注釋的元素必須為false

*@Min(value) 被注釋的元素必須是一個數(shù)字,其值必須大于等于指定的最小值

*@Max(value) 被注釋的元素必須是一個數(shù)字,其值必須小于等于指定的最大值

*@DecimalMin(value) 被注釋的元素必須是一個數(shù)字,其值必須大于等于指定的最小值

*@DecimalMax(value) 被注釋的元素必須是一個數(shù)字,其值必須小于等于指定的最大值

*@Size(max,min) 被注釋的元素的大小必須在指定的范圍內。

*@Digits(integer,fraction) 被注釋的元素必須是一個數(shù)字,其值必須在可接受的范圍內

*@Past 被注釋的元素必須是一個過去的日期

*@Future 被注釋的元素必須是一個將來的日期

*@Pattern(value) 被注釋的元素必須符合指定的正則表達式。

*@Email 被注釋的元素必須是電子郵件地址

*@Length 被注釋的字符串的大小必須在指定的范圍內

*@Range 被注釋的元素必須在合適的范圍內

*@NotEmpty:用在集合類上,不能為null,并且長度必須大于0

*@NotBlank:只能作用在String上,不能為null,而且調用trim()后,長度必須大于0

@NonNull使用

@Override
@Transactional
public Baby getBabyById(@NonNull String babyId) {
? ? return babyMapper.getBabyById(babyId);
}

如果 babyId 為空getBabyById會報NullPointerException

Java中容易混淆的一些知識

@NotNull、@NotEmpty、@NotBlank、@NonNull、@Nollable區(qū)分

注解解釋
@NotNull只能用在基本類型之上,不能為空,但可以是空字符串
@NotEmpty只能作用在集合上,可以為空,但是不可以為空字符串
@NotBlank只能作用在String類型上,而且調用trim()之后,長度必須大于零
@NonNull作用在方法參數(shù)上,為空的話,會生成一個控制檢查語句(檢查語句可以自定義)
@Nollable作用在參數(shù)上,表示可以為空

@GetMapping、@PostMapping、@RequestMapping,如果不清楚用哪個,就用@RequestMapping,一般公司所用就是@PostMapping

注解解釋
@GetMapping接收的就是Get方法
@PostMapping接收的Post方法
@RequestMapping它默認的Get和Set方法都支持的

@Valid、@Validated,檢測傳參是否規(guī)范。

注解解釋
@Valid作用在方法、字段、參數(shù)和構造器上
@Validated作用在類、方法、參數(shù)

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot實現(xiàn)圖片識別文字的四種方式小結

    SpringBoot實現(xiàn)圖片識別文字的四種方式小結

    本文主要介紹了SpringBoot實現(xiàn)圖片識別文字的四種方式,包括Tess4J,百度智能云,阿里云,騰訊云這四種,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 詳解如何保護SpringBoot配置文件中的敏感信息

    詳解如何保護SpringBoot配置文件中的敏感信息

    使用過SpringBoot配置文件的朋友都知道,資源文件中的內容通常情況下是明文顯示,安全性就比較低一些,所以為了提高安全性,就需要對配置文件中的敏感信息進行保護,下面就為大家介紹一下實現(xiàn)方法吧
    2023-07-07
  • Java超細致講解數(shù)組的使用

    Java超細致講解數(shù)組的使用

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結構之一,當然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲固定大小的同類型元素
    2022-05-05
  • IDEA 2020.1 搜索不到Chinese ​(Simplified)​ Language Pack EAP,無法安裝的問題

    IDEA 2020.1 搜索不到Chinese ​(Simplified)​ Language

    小編在安裝中文插件時遇到IDEA 2020.1 搜索不到Chinese &#8203;(Simplified)&#8203; Language Pack EAP,無法安裝的問題,本文給大家分享我的解決方法,感興趣的朋友一起看看吧
    2020-04-04
  • Mybatis實現(xiàn)增刪改查

    Mybatis實現(xiàn)增刪改查

    這篇文章主要介紹了Mybatis實現(xiàn)增刪改查,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-01-01
  • SpringBoot使用AOP實現(xiàn)統(tǒng)計全局接口訪問次數(shù)詳解

    SpringBoot使用AOP實現(xiàn)統(tǒng)計全局接口訪問次數(shù)詳解

    這篇文章主要介紹了SpringBoot通過AOP實現(xiàn)對全局接口訪問次數(shù)的統(tǒng)計,文章從相關問題展開全文內容詳情,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Java RocketMQ 路由注冊與刪除的實現(xiàn)

    Java RocketMQ 路由注冊與刪除的實現(xiàn)

    這篇文章主要介紹了Java RocketMQ 路由注冊與刪除的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • C++實現(xiàn)掃雷游戲示例講解

    C++實現(xiàn)掃雷游戲示例講解

    這篇文章主要介紹了C++實現(xiàn)掃雷游戲示例講解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Java教程各種接口的介紹

    Java教程各種接口的介紹

    Java教程各種接口的介紹,需要的朋友可以參考一下
    2013-02-02
  • 如何解決maven搭建一直處于running:..狀態(tài)問題

    如何解決maven搭建一直處于running:..狀態(tài)問題

    在使用Maven搭建項目時,有時會遇到一直處于加載狀態(tài)的情況,通過修改設置可以解決這個問題,具體步驟為:1. 打開File->Settings->Build, Execution, Deployment->Maven->running,然后在VMOptions中填寫"-DarchetypeCatalog=internal"
    2024-09-09

最新評論