用来做啥的??
顾名思义,groups应该是用作分组的,那么,分组来做什么? 怎么分组的? 其实主要是用于对参数校验的一个分组,我们在对数据做不同操作的时候,可能对其中部分字段 有非空校验,比如更新的时候A、B…字段不能为空,,新增的时候A、C字段又不能为空B是可以空的,那么我们如果单独做校验可能就显得比较麻烦,代码看起来不是那么优雅,这里引入一个分组,将不同类型操作需要校验的字段分为一组,校验的时候只需要按组去校验字段就好了。具体使用看下面的代码
怎么用?
如下实体类User ,所有字段在create的时候都需要校验,createTime只是在update的时候才需要校验,注解如代码所示
@Data
@Builder
public class User {
@NotBlank(groups = Create.class,message = "name 不能为空")
private String name;
@NotNull(groups = {Update.class,Create.class},message = "createTime 不能为空")
private String createTime;
@NotNull(groups = Create.class,message = "status 不能为空")
private Integer status;
public @interface Create {}
public @interface Update {}
}
校验在controller层,只需要在参数前面加上@Validated注解,分别配置需要校验的组
@RestController
@RequestMapping("/group-valid-test")
public class GroupValidTest {
@PostMapping
public String create(@Validated(User.Create.class) @RequestBody User user){
return "success";
}
@PutMapping
public String update(@Validated(User.Update.class) @RequestBody User user){
return "success";
}
}
测试验证
create时name为空的情况: update时createTime为空的情况:
|