springboot @Valid和BindingResult校验参数

@Valid和BindingResult是要一起使用的,成对存在进行参数校验,一个binding对应一个@Valid。

常用校验注解

​@Null  //被注释的元素必须为null
@NotNull  //被注释的元素不能为null
@AssertTrue  //被注释的元素必须为true
@AssertFalse  //被注释的元素必须为false
@Min(value)  //被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)  //被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)  //被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)  //被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max,min)  //被注释的元素的大小必须在指定的范围内。
@Digits(integer,fraction)  //被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past  //被注释的元素必须是一个过去的日期
@Future  //被注释的元素必须是一个将来的日期
@Pattern(value) //被注释的元素必须符合指定的正则表达式。
@Email //被注释的元素必须是电子邮件地址
@Length //被注释的字符串的大小必须在指定的范围内
@NotEmpty  //被注释的字符串必须非空
@Range  //被注释的元素必须在合适的范围内

实体类: 

@Api(value = "aaa")
@TableName("user_test")
public class Good implements Serializable {
	@TableId(value = "id",type = IdType.AUTO)
    private int id;
	@TableField(value = "name")
	@NotNull(message = "姓名不能为空!")
    private String name;
	@TableField(value = "sex")
	@Max(value = 2 ,message = "不能大于2")
	private int sex;

	public int getSex() {
		return sex;
	}

	public void setSex(int sex) {
		this.sex = sex;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

controller:

 @PostMapping("/list2")
    @ApiOperation("最新")
    public String getlist2(@Valid Good good , BindingResult bindResult){
        Map map=new HashMap<>();
        JSONArray jsonArray=null;
        if(bindResult.hasErrors()){
            List<FieldError> fieldErrors = bindResult.getFieldErrors();
            fieldErrors.forEach(fieldError -> {
                       map.put(fieldError.getField(),fieldError.getDefaultMessage());
                    });
           jsonArray=  JSONArray.fromObject(map);
        }
        else {
            List goodList = goodService.list(new QueryWrapper<Good>().eq("name",good.getName()).eq("sex",good.getSex()));
            jsonArray=  JSONArray.fromObject(goodList);
        }

        return jsonArray.toString();
    }

使用swagger插件验证:

不输入任何参数

name='李四' sex=3

 name='李四' sex=1

猜你喜欢

转载自blog.csdn.net/qq_39404258/article/details/106124133