Title

使用 @Valid 对实体进行属性校验

接收实体类的时候,需要对实体类的部分属性进行校验,可以使用 @Vaild@Validated

@Valid

可以用在方法、构造函数、方法参数和成员属性上

与@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之间
@NotEmpty 验证注解的元素值不为null且不为空(字符长度不为0、集合大小不为0)
@NotBlank 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty@NotBlank只应用于字符串且比较时会去除字符串的空格
@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

示例如下:
实体类:
message的内容是当校验不通过的时候的错误信息

    @Max(value= 1000,,message = "每页最多展示的记录条数为1000")
    @Min(value = 10,message = "每页最少展示的记录条数为10")
    private Integer pageSize;

使用

public ResponseData<Object> test(@RequestBody @Valid TestVO testVO) {
	...
}

注意:如果只添加@Min这类注解,实体类使用的地方没有@Validated@Valid,那么@Min的校验是不生效的

@Validated

可以用在类型、方法和方法参数上。但是不能用在成员属性上,不同场景下,对于实体类的属性的校验情况可能不同,可以用@Validated来进行分组校验

使用方法:
1、自定义若干个接口,接口内容为空,如果ValidationForA,ValidationForB
2、在实体类属性注解上添加分组

示例如下:

@Max(value = 1000,,message = "每页最多展示的记录条数为1000",groups={ValidationForA.class})
@Min(value = 10,message = "每页最少展示的记录条数为10")
private Integer pageSize;

使用

public ResponseData<Object> test(@RequestBody @Validated({ValidationForA.class}) TestVO testVO) {
	...
}

比较

1、可以使用BindingResult实体类来接收校验结果


原文章地址:

https://blog.csdn.net/weixin_45095479/article/details/114754190

posted @ 2022-06-01 16:13  快乐小洋人  阅读(496)  评论(0编辑  收藏  举报