@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