第十七章第八节:分组校验规则
1、在onlinemall-common项目中创建两个分组(接口类型)
添加数据是校验分组:com.applesnt.common.valid.AddGroup
package com.applesnt.common.valid;
/**
* @author menghaibin
* @project onlinemall
* @date 2021/6/10-16:45
* @describe:添加数据是校验分组
*/
public interface AddGroup {
}
修改数据是校验分组:com.applesnt.common.valid.UpdateGroup
package com.applesnt.common.valid;
/**
* @author menghaibin
* @project onlinemall
* @date 2021/6/10-16:45
* @describe:修改数据是校验分组
*/
public interface UpdateGroup {
}
2、给需要数据提交校验的controller的相关方法增加分组规则
com.applesnt.onlinemall.product.controller.BrandController
/**
* 品牌信息保存
* @Validated:实体类开启校验,并且指定用AddGroup分组
*/
@RequestMapping("/save")
public R save(@Validated({AddGroup.class}) @RequestBody BrandEntity brand){
brandService.save(brand);
return R.ok();
}
/**
* 品牌信息修改
* @Validated:实体类开启校验,并且指定用UpdateGroup分组
*/
@RequestMapping("/update")
public R update(@Validated({UpdateGroup.class}) @RequestBody BrandEntity brand){
brandService.updateById(brand);
return R.ok();
}
3、给需要校验的实体类添加校验规则
如果指定了分组规则,需要给每个属性都绑定各自组的规则,否者不会进行校验
package com.applesnt.onlinemall.product.entity;
import com.applesnt.common.valid.AddGroup;
import com.applesnt.common.valid.UpdateGroup;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import org.hibernate.validator.constraints.URL;
import javax.validation.constraints.*;
/**
* 品牌
*
* @author menghaibin
* @email applesnt@163.com
* @date 2021-05-27 09:26:38
*/
@Data
@TableName("pms_brand")
public class BrandEntity implements Serializable {
private static final long serialVersionUID = 1L;
//如果指定了分组规则,需要给每个属性都绑定各自组的规则,否者不会进行校验
/**
* 品牌id
*/
@TableId
@NotNull(message = "修改品牌id不能为空",groups = {UpdateGroup.class})
@Null(message = "新增品牌不能指定id",groups = {AddGroup.class})
private Long brandId;
/**
* 品牌名:新增和修改都不能为空
*/
@NotBlank(message="品牌不能为空",groups = {AddGroup.class, UpdateGroup.class})
private String name;
/**
* 品牌logo地址:新增和修改都不能为空
*/
@NotEmpty(message="品牌路径不能为空",groups = {AddGroup.class, UpdateGroup.class})
@URL(message = "品牌路径必须是一个url地址",groups = {AddGroup.class,UpdateGroup.class})
private String logo;
/**
* 介绍:新增和修改都不能为空
*/
@NotNull(message="介绍不能为空",groups = {AddGroup.class, UpdateGroup.class})
private String descript;
/**
* 显示状态[0-不显示;1-显示]:新增和修改都不能为空
*/
@NotNull(message="显示状态不能为空",groups = {AddGroup.class, UpdateGroup.class})
private Integer showStatus;
/**
* 检索首字母:新增和修改都不能为空且不是一个英文字母
*/
@NotBlank(message = "检索首字母不能为空" ,groups = {AddGroup.class, UpdateGroup.class})
@Pattern(regexp = "/^[a-zA-Z]$/",message = "检索首字母必须是a-z或者A-Z",groups = {AddGroup.class, UpdateGroup.class})
private String firstLetter;
/**
* 排序:新增和修改都不能为空且必须是一个大于等于0的整数
*/
@NotNull(message = "排序不能为空" ,groups = {AddGroup.class, UpdateGroup.class})
@Range(min = 0,message = "必须是一个大于等于0的整数" ,groups = {AddGroup.class, UpdateGroup.class})
private Integer sort;
}



浙公网安备 33010602011771号