分组校验
使用场景:
一个实体类用到修改和添加
添加和修改校验的字段不同,便可以使用分组校验
快速入口
springboot后端数据校验JSR303规范详解-入口
JSR303自定义校验注解-入口
以下是本篇文章正文内容,下面案例可供参考
一、新建空的接口
如图:
说明:这些接口是空的,校验是用来区分场景而已
package com.atguigu.common.valid;
/**
* @author suqinyi
* @Date 2021/4/8
*/
public interface AddGroup {
}
二、使用gruops字段指定组
说明:
1、groups 是这个数组
2、@NotNull(groups = {UpdateGroup.class})在修改的时候开启校验
3、@NotBlank(groups ={UpdateGroup.class,AddGroup.class})在添加和修改的时候生效
4、没有使用groups的其他校验字段,在conterller指定采用分组校验模式,其他字段不生效(不校验)
看小编代码descript上面的注释说明
@NotNull(message = "修改必须指定id",groups = {UpdateGroup.class})
@Null(message = "新增不能指定id",groups = {AddGroup.class})
@TableId
private Long brandId;//品牌id
/**
* 品牌名
*/
@NotBlank(message = "品牌名必须提交",groups = {UpdateGroup.class,AddGroup.class})
private String name;
@NotBlank(groups = {AddGroup.class})
@URL(message = "logo必须是地址" ,groups = {UpdateGroup.class,AddGroup.class})
private String logo;//品牌logo地址
//说明如果是分组校验模式,这个字段校验则不生效,如果要生效需要指定组
@NotBlank(groups = {AddGroup.class})
private String descript;// 介绍
三、在controller使用@Validated指定组
//指定添加组
@RequestMapping("/save")
public R save(@Validated(AddGroup.class) @RequestBody BrandEntity brand) {
brandService.save(brand);
return R.ok();
}
四、完成
总结
分组校验(多场景校验)
1)、使用groups字段 @NotBlank(message = "品牌名必须提交",groups ={UpdateGroup.class,AddGroup.class})
给校验注解标注什么情况需要进行校验
2)、在controller使用 @Validated(AddGroup.class)
3)、没有指定的组的校验注解不会生效