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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章