@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