@valid注解

时间:2025-03-23 07:56:46

@Valid注解的作用

注解@Valid的主要作用是用于数据校验,可以在定义的实体中的属性上,添加不同的注解来完成不同的校验规则,而在接口类中的接受数据参数中添加@Valid注解,这时实体类会开启一个校验的功能。

@Valid相关注解

下面是 @Valid 相关的注解,在实体类中不同的属性上添加不同的注解,就能实现不同数据的效验功能。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CiB0ExJ8-1659595829376)(java/v2-4e07db0edb472307e968dd6779da4c5d_r.jpg)]

实体类中添加@Valid相关注解

使用@Valid相关注解非常简单,只需要在参数的实体类属性上添加如@NotBlank,@Max,@Min等注解对字段进行限制。如下:
User:

public class User{
    @NotBlank(message = "姓名不为空")
    private String username;
    @NotBlank(message = "密码不为空")
    private String password;
}

如果嵌套的实体对象,则需要在最外层属性上添加@Valid注解
User:

public class User{
    @NotBlank(message = "姓名不为空")
    private String username;
    @NotBlank(message = "密码不为空")
    private String password;
    //嵌套必须加@Valid,否则嵌套中的验证不生效
    @Valid
    @NotNull(message = "用户信息不能为空")
    private UserInfo userInfo;
}

UserInfo:

public class User {
    @NotBlank(message = "年龄不为空")
    @Max(value = 18,message = "不超过18岁")
    private String age;
    @NotBlank(message = "性别不为空")
    private String gender;
}

接口类中添加@Valid注解

在controller类中添加接口,POST方法中接收设置了@Valid相关注解的实体对象,然后再参数中添加@Valid注解来开启效验功能,需要注意的是,@Valid对Get请求中接收的平面参数请求无效。

@RestController
public class TestController {
    @PostMapping("/user")
    public String addUserInfo(@Valid @RequestBody User user){
        return "调用成功";
    }
}

User user){
return “调用成功”;
}
}