最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

區(qū)別

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

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

@NonNull在方法或構(gòu)造函數(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());
?}

此時調(diào)用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) 被注釋的元素的大小必須在指定的范圍內(nèi)。

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

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

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

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

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

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

*@Range 被注釋的元素必須在合適的范圍內(nèi)

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

*@NotBlank:只能作用在String上,不能為null,而且調(diào)用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類型上,而且調(diào)用trim()之后,長度必須大于零
@NonNull作用在方法參數(shù)上,為空的話,會生成一個控制檢查語句(檢查語句可以自定義)
@Nollable作用在參數(shù)上,表示可以為空

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

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

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

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

總結(jié)

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

相關(guān)文章

  • 淺談Java編程中的單例設(shè)計模式

    淺談Java編程中的單例設(shè)計模式

    這篇文章主要介紹了Java編程中的單例設(shè)計模式,在許多語言的編程過程當(dāng)中單例模式都被開發(fā)者們廣泛采用,需要的朋友可以參考下
    2015-07-07
  • 利用Java讀取二進(jìn)制文件實例詳解

    利用Java讀取二進(jìn)制文件實例詳解

    這篇文章主要給大家介紹了利用Java讀取二進(jìn)制文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • Java流程控制之循環(huán)結(jié)構(gòu)while、do...while

    Java流程控制之循環(huán)結(jié)構(gòu)while、do...while

    這篇文章主要介紹了Java流程控制之循環(huán)結(jié)構(gòu)while及do...while,文章除了講解循環(huán)結(jié)構(gòu)while和do...while之外,還講解了他們之間的區(qū)別,下面我們就一起進(jìn)入文章講解更多詳細(xì)內(nèi)容吧
    2021-12-12
  • Struts2中異常處理機制分析

    Struts2中異常處理機制分析

    這篇文章主要介紹了Struts2中異常處理機制分析,涉及到了聲明式異常捕捉的相關(guān)內(nèi)容,以及兩種異常映射的分析,需要的朋友可以參考下。
    2017-09-09
  • SpringBoot參數(shù)驗證10個技巧值得收藏

    SpringBoot參數(shù)驗證10個技巧值得收藏

    Spring Boot提供了內(nèi)置的驗證注解,可以幫助簡單、快速地對輸入字段進(jìn)行驗證,例如檢查 null 或空字段、強制執(zhí)行長度限制、使用正則表達(dá)式驗證模式以及驗證電子郵件地址,那么在Spring Boot應(yīng)用中如何做好參數(shù)校驗工作呢,本文提供了10個小技巧感興趣的朋友一起看看吧
    2023-08-08
  • gRPC中interceptor攔截器的使用教程

    gRPC中interceptor攔截器的使用教程

    gRPC中的interceptor攔截器分為客戶端攔截器和服務(wù)端攔截器,分別是在客戶端和服務(wù)端的請求被發(fā)送出去之前進(jìn)行處理的邏輯,下面就跟隨小編一起學(xué)習(xí)一下interceptor攔截器的具體使用吧
    2023-08-08
  • java設(shè)計模式之工廠模式實例詳解

    java設(shè)計模式之工廠模式實例詳解

    這篇文章主要介紹了java設(shè)計模式之工廠模式,結(jié)合具有實例形式分析了java工廠模式的概念、原理、實現(xiàn)與使用方法,需要的朋友可以參考下
    2017-09-09
  • Java中的ArrayList、LinkedList、HashSet等容器詳解

    Java中的ArrayList、LinkedList、HashSet等容器詳解

    這篇文章主要介紹了Java中的ArrayList、LinkedList、HashSet等容器詳解,集合表示一組對象,稱為其元素,有些集合允許重復(fù)元素,而另一些則不允許,有些是有序的,有些是無序的,需要的朋友可以參考下
    2023-08-08
  • Java Web項目中實現(xiàn)文件下載功能的實例教程

    Java Web項目中實現(xiàn)文件下載功能的實例教程

    這篇文章主要介紹了Java Web項目中實現(xiàn)文件下載功能的實例教程,分別講解了通過超鏈接實現(xiàn)下載以及通過Servlet程序?qū)崿F(xiàn)下載的方式,需要的朋友可以參考下
    2016-05-05
  • Spring?boot框架JWT實現(xiàn)用戶賬戶密碼登錄驗證流程

    Spring?boot框架JWT實現(xiàn)用戶賬戶密碼登錄驗證流程

    這篇文章主要介紹了Springboot框架JWT實現(xiàn)用戶賬戶密碼登錄驗證,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06

最新評論

左云县| 宁陵县| 台南县| 阆中市| 监利县| 定兴县| 竹溪县| 仁寿县| 遵义市| 台东县| 板桥市| 阿城市| 新建县| 青岛市| 漳浦县| 武城县| 麻城市| 湖北省| 唐河县| 金昌市| 积石山| 雷波县| 内乡县| 巴彦县| 宁蒗| 横山县| 手机| 黔西县| 霍山县| 任丘市| 盐边县| 额尔古纳市| 中宁县| 韶山市| 和政县| 安义县| 府谷县| 葫芦岛市| 富平县| 镇江市| 汉川市|