1. 程式人生 > 其它 >SpringBoot使用@Validation校驗實體引數

SpringBoot使用@Validation校驗實體引數

在做前後端分離時,需要提供介面給前端,那麼介面的欄位實體校驗就顯得尤為重要了

  • 在需要實體校驗的實體類前加上@Validated @RequestBody註解

  • 是校驗的實體類的欄位上加入相關的校驗註解

註解 功能
@AssertFalse 可以為null,如果不為null的話必須為false
@AssertTrue 可以為null,如果不為null的話必須為true
@DecimalMax 設定不能超過最大值
@DecimalMin 設定不能超過最小值
@Digits 設定必須是數字且數字整數的位數和小數的位數必須在指定範圍內
@Future 日期必須在當前日期的未來
@Past 日期必須在當前日期的過去
@Max 最大不得超過此最大值
@Min 最大不得小於此最小值
@NotNull 不能為null,可以是空
@Null 必須為null
@Pattern 必須滿足指定的正則表示式
@Size 集合、陣列、map等的size()值必須在指定範圍內
@Email 必須是email格式
@Length 長度必須在指定範圍內
@NotBlank 字串不能為null,字串trim()後也不能等於“”
@NotEmpty 不能為null,集合、陣列、map等size()不能為0;字串trim()後可以等於“”
@Range 值必須在指定範圍內
@URL 必須是一個URL
  • 實體校驗異常捕獲,在有@RestControllerAdvice註解的類裡建立異常處理方法

    • @ResponseStatus(HttpStatus.BAD_REQUEST)
          @ExceptionHandler(value = MethodArgumentNotValidException.class)
          public Result handler(MethodArgumentNotValidException e){
              log.error("實體校驗異常:============={}");
              BindingResult bindingResult = e.getBindingResult();
              ObjectError objectError = bindingResult.getAllErrors().stream().findFirst().get();
              return Result.fail(objectError.getDefaultMessage());
          }
      

@NotEmpty和@NotBlank和@NotNull

  • @NotNull:不能為null,但可以為empty,用在基本型別上
  • @NotEmpty:不能為null,而且長度必須大於0,用在集合類上面
  • @NotBlank:只能作用在String上,不能為null