javax.validation.Valid 注解校验

401 阅读3分钟

注解说明: 根据使用频次排序

验证注解验证的数据类型说明
@NotNull任意类型验证注解的元素值不是null
@Size(min=下限,max=上限)字符串,Collection,Map,数组等验证注解的元素值在min和max指定区间内,如字符长度,集合大小
@NotBlank字符串验证注解的元素值不为空(不为null,trim后长度不为0), 只能注解在字符串上
@Length(min=下限,max=上限)字符串验证注解的元素值在最大值和最小值之间
@NotEmpty字符串, Collection,Map,数组验证注解的元素值不为null且不为空(字符串长度不为0,集合大小不为0)
@Pattern(regexp=正则表达式,flag=标志的模式)String,任何CharSequence子类型验证注解的元素值和正则表达式匹配
@Valid任何非原子类型指定递归验证关联的对象
@Null任意类型验证注解的元素值是null
@AssertFalseBoolean,boolean验证注解的元素值是false
@AssertTrueBoolean,boolean验证注解的元素值是true
@Min(Value=值)存储是数字的类型验证注解的元素值是大于等于指定的Vlaue值
@Max(Value=值)存储是数字的类型验证注解的元素值是小于等于指定的Vlaue值
@DecimalMax(Value=值)存储是数字的类型验证注解的元素值是小于等于指定的Vlaue值
@Digits(integer=整数位数,fraction=小数位数)存储是数字的类型验证注解的元素值是整数位数和小数位数上限
@Range(min=下限,max=上限)BigDecimal,BigInteter,CharSequence,byte,short,int,long等原子类型和包装类型验证注解的元素值在最大值和最小值之间

1.@NotNull

不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其标注的字段可以使用 @size、@Max、@Min 对字段数值进行大小的控制

2.@NotEmpty

不能为 null,且长度必须大于 0,一般用在集合类上或者数组上

3.@NotBlank

只能作用在接收的 String 类型上,注意是只能,不能为 null,而且调用 trim() 后,长度必须大于 0即:必须有实际字符

 

注意在使用 @NotBlank 等注解时,一定要和 @valid 一起使用,否则 @NotBlank 不起作用。

  • 一个 BigDecimal 的字段使用字段校验标签应该为 @NotNull。
  • 在使用 @Length 一般用在 String 类型上可对字段数值进行最大长度限制的控制。
  • 在使用 @Range 一般用在 Integer 类型上可对字段数值进行大小范围的控制。

附 @Valid 

有时参数对象中还包含其他参数对象,如果要验证包含的对象里的参数,就需要使用@Valid注解包含的对象,如下:


/**  
* 拓扑关系集合  
**/  
@ApiModelProperty(value = "拓扑关系集合",required = true)  
@NotEmpty(message = "拓扑关系集合不能为空")  
@Valid  
private List<GraphEdgeParam> edges;



@Data  
@ApiModel(value = "GraphEdgeParam", description = "拓扑关系入参")  
public class GraphEdgeParam implements Serializable {  
  
    @ApiModelProperty(value = "来源节点")  
    @NotNull(message = "来源节点不能为空")  
    private String source;  

    @ApiModelProperty(value = "指向节点")  
    @NotNull(message = "指向节点不能为空")  
    private String dest;  
}