第十七章第八节:分组校验规则

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;
}

4、postman分组校验测试

添加测试:http://localhost:88/api/product/brand/save

修改测试:http://localhost:88/api/product/brand/update

posted @ 2021-06-10 17:27  努力的校长  阅读(99)  评论(0)    收藏  举报