JSR 303 分组校验 (三)
1 适用场景
表单新增时 不需要带id, 而修改时需要带id
一 增加两个分组
AddGroup
UpDateGroup
二 实体类上做分组
三 Controller 上做限制
四 测试
修改接口
新增接口
五 复杂情况下测试
加分组后
校验生效
默认没有指定分组的校验注解 在分组校验下不生效 只会在@Validated 生效
六 附上完整entities
package com.atguigu.gulimall.product.entity; import com.atguigu.common.valid.AddGroup; import com.atguigu.common.valid.UpdateGroup; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.util.Date; import lombok.Data; import org.hibernate.validator.constraints.URL; import javax.validation.constraints.*; /** * 品牌 * * @author mongoubiubiu * @date 2021-01-10 15:19:27 */ @Data @TableName("pms_brand") public class BrandEntity implements Serializable { private static final long serialVersionUID = 1L; /** * 品牌id */ @Null(message = "新增不能指定id",groups = {AddGroup.class}) @NotNull(message = "修改必须指定品牌id",groups = {UpdateGroup.class}) @TableId private String brandId; /** * 品牌名 */ @NotBlank(message ="品牌名必须提交",groups = {AddGroup.class,UpdateGroup.class}) private String name; /** * 品牌logo地址 */ @NotEmpty(groups = {AddGroup.class,UpdateGroup.class}) @URL(message = "logo必须是一个合法的地址",groups = {AddGroup.class,UpdateGroup.class}) private String logo; /** * 介绍 */ private String descript; /** * 显示状态[0-不显示;1-显示] */ @TableLogic(value = "1",delval = "0") private Integer showStatus; /** * 检索首字母 */ @NotEmpty(groups = {AddGroup.class}) @Pattern(regexp = "/^[a-zA-Z]$/",message = "检索首字母必须是一个字母",groups = {AddGroup.class,UpdateGroup.class}) private String firstLetter; /** * 排序 */ @NotNull(groups = {AddGroup.class}) @Min(value = 0,message = "排序必须大于等于0",groups = {AddGroup.class,UpdateGroup.class}) private Integer sort; }