springboot注解@NotNull,@NotBlank,@Valid自动判定空值

 

一、前言

     搭建springboot项目,我们都是采用的Restful接口,那么问题来了,当前端调用接口或者是其他项目调用时,我们不能单一靠调用方来控制参数的准确性,自己也要对一些非空的值进行判定。

二、方案

     按照我们以往的做法,都是对request中的参数一个一个进行非空判定。

     Model:      

  1. public class Order {

  2. private Long userID;  

  3. private Long addressID;

  4. private String comment;

  5.  }

   

Controller:

  1. @PostMapping("/createOrders")

  2. public String createOrders(@RequestBody Order dto) {

  3. if(dto.getUserID==null)

  4. return "userID不能为空";

  5. if(dto.getAddressID==null)

  6. return "addressID不能为空";

  7. if(dto.getComment==null)

  8. return "comment不能为空";

  9. return "sucess";

  10. }

 

这种做法首先是可取的,能达到我们的要求,但是这样如果model字段过多,判定的就很多,相对维护起来就不是那么方便,其次增加controller层的负担,既然我们来到spring4的时代,就应该适应使用注解的趋势,下面是使用注解后的比变化。

  Model:

  1. public class Order {

  2. @NotNull(message = "用户ID不能为空")

  3. private Long userID;

  4.   

  5. @NotNull(message = "收货人地址id不能为空")

  6. private Long addressID;

  7.   

  8. @NotBlank(message = "备注不为空")

  9. private String comment;

  10. }

Controller:

  1. @PostMapping("/createOrders")

  2. public String createOrders(@RequestBody @Valid Order dto, BindingResult results) { 

  3. if (results.hasErrors()) 

  4. return results.getFieldError().getDefaultMessage();

  5. return "success";

  6. }

这样我们就只需要在model字段上加上非空验证和相应提示语就好了。

 

三、常用的校验注解

  1. ​javax.validation.constraints.NotNull

  2. ​@Null  被注释的元素必须为null

  3. @NotNull  被注释的元素不能为null

  4. @AssertTrue  被注释的元素必须为true

  5. @AssertFalse  被注释的元素必须为false

  6. @Min(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值

  7. @Max(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值

  8. @DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值

  9. @DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值

  10. @Size(max,min)  被注释的元素的大小必须在指定的范围内。

  11. @Digits(integer,fraction)  被注释的元素必须是一个数字,其值必须在可接受的范围内

  12. @Past  被注释的元素必须是一个过去的日期

  13. @Future  被注释的元素必须是一个将来的日期

  14. @Pattern(value) 被注释的元素必须符合指定的正则表达式。

  15. @Email 被注释的元素必须是电子邮件地址

  16. @Length 被注释的字符串的大小必须在指定的范围内

  17. @NotEmpty  被注释的字符串必须非空

  18. @Range  被注释的元素必须在合适的范围内

补充:

@Valid 注解类型的使用:

@Null
限制只能为null

@NotNull
限制必须不为null

@AssertFalse
限制必须为false

@AssertTrue
限制必须为true

@DecimalMax(value)
限制必须为一个不大于指定值的数字

@DecimalMin(value)
限制必须为一个不小于指定值的数字

@Digits(integer,fraction)
限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction

@Future
限制必须是一个将来的日期

@Max(value)
限制必须为一个不大于指定值的数字

@Min(value)
限制必须为一个不小于指定值的数字

@Past
限制必须是一个过去的日期

@Pattern(value)
限制必须符合指定的正则表达式

@Size(max,min)
限制字符长度必须在min到max之间

@Past
验证注解的元素值(日期类型)比当前时间早

@NotEmpty
验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)

@NotBlank
验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格

@Email
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

 

 

 

原文地址:https://blog.csdn.net/albenxie/article/details/91884052

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值