业务场景:同一个接口,不同的操作的时候,校验的字段是不同的。比如更改状态,对于请假申请审批和撤销,校验的字段不同的时候。
下面看实例:
1.定义分组
2.比如下面的代码,在文章分类中更新文章(需id),添加文章(不需id),使用Validation分组校验,通过groups属性,让指定的方法的参数起到校验规则
package com.itheima.pojo;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.groups.Default;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class Category {
@NotNull(groups = Update.class)
private Integer id;//主键ID
@NotEmpty
private String categoryName;//分类名称
@NotEmpty
private String categoryAlias;//分类别名
private Integer createUser;//创建人ID (创建人应该为当前登录的人)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;//创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;//更新时间
//如果说某个校验项没有指定分组,默认属于Default分组
//分组之间可以继承,A extends B,那么A中拥有B中所有的校验项
public interface Add extends Default {
}
public interface Update extends Default {
}
}
3.校验时指定校验的分组