validation校验 @NotNull @NotBlank及分组校验
我們經常需要對接口的請求參數進行校驗,在沒有使用validation之前都是用if去做校驗的,但這樣通常需要寫一長串的if語句,使代碼看起來非常臃腫,即使將這些校驗封裝到一個方法或是類中,然后調用,但本質上并沒有改變什么。
validation校驗可以方便的解決上述問題,只需在請求參數的DTO類的屬性上加上對應的注解。它就能幫助我們在執行接口方法之前提前進行參數校驗。我們常用的校驗如判空@NotNull @NotBlank,或是對參數的大小、長度等都能進行校驗,甚至可以使用正則表達式。
使用時只需在DTO上加上注解
再在對應的接口上加上注解@Valid
@ApiOperation(value = "新增行業") @PostMapping(value = "/xxx/xxx/addIndustry",consumes = "application/json") ResultModel<IndustryVO> addIndustry(@Valid @RequestBody IndustryDTO var1);這樣在調用新增接口時如果參數industryName為空或空字符串,validation會自動幫我們拋出校驗錯誤:行業名稱不能為空
分組校驗
有些時候可能我們新增修改接口請求參數用到的是同一個實體作為入參,但是有些參數在新增時是不用的,在修改時卻需要填寫。比如主鍵id,這時候單純的一個@NotNull注解并不能達成這樣的要求,我們需要引入分組校驗。
先定義兩個組
然后將入參實體改造一下,給validation注解加上組
@Data @Api("行業") public class IndustryDTO implements Serializable {private static final long serialVersionUID = 1L;@NotNull(message = "id不能為空", groups = UpdateGroup.class)private Long id;@NotBlank(message = "行業名稱不能為空",groups = AddGroup.class)@NotBlank(message = "行業名稱不能為空", groups = UpdateGroup.class)@ApiModelProperty("行業名稱")private String industryName;@ApiModelProperty("狀態0-關閉 1-啟用")private Long status;@ApiModelProperty("分頁開始")private int page = 0;@ApiModelProperty("每頁數據行數")private int size = 10; }在接口上也需要聲明本接口在校驗時需要調用的是哪個組的校驗規則
/*** @author TangHaiZhi* @date 2021/8/20*/ @Api(value = "運營解決方案行業") @Validated @Feign(serviceName = "xxxService") public interface OperationIndustryFeign {@ApiOperation(value = "新增行業")@Validated(AddGroup.class)@PostMapping(value = "/xxx/xxx/addIndustry",consumes = "application/json")ResultModel<IndustryVO> addIndustry(@Valid @RequestBody IndustryDTO var1);@ApiOperation(value = "修改行業")@Validated(UpdateGroup.class)@PostMapping(value = "/xxx/xxx/updateIndustry",consumes = "application/json")ResultModel<IndustryVO> updateIndustry(@Valid @RequestBody IndustryDTO var1);@ApiOperation(value = "查詢全部行業")@PostMapping(value = "/xxx/xxx/queryIndustry",consumes = "application/json")ResultModel<List<IndustryVO>> queryIndustry(@RequestBody IndustryDTO var1); }這樣在新增時會調用add組的校驗規則去校驗行業名稱,在修改時會調用update組的校驗規則去校驗id和行業名稱,而在查詢時則不會進行任何校驗
總結
以上是生活随笔為你收集整理的validation校验 @NotNull @NotBlank及分组校验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 NUCLEO开发板通过Min
- 下一篇: 如何恢复笔记本的工作报表呢