springboot 注解实现参数的基础校验
功能实现
实体类加入@Min和@Max注解实现参数范围
@Min(value=-180)
@Max(value=180)
private Double x;
@Min(value=-90)
@Max(value=90)
private Double y;
/**
* 相机的z坐标 z
*/
@NotNull
private Double z;
web接口层实现
接口参数加入@Vaild注解
@RequestMapping("/update")
public Result<String> update(@RequestBody @Valid HistoricSite historicSite,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
List<ObjectError> errorList = bindingResult.getAllErrors();
if (errorList != null && errorList.size() > 0) {
Result<String> result ==ResultUtil.failure2(errorList.get(0).getDefaultMessage());
return result;
}
}
//修改提交
//historicSiteService.update(historicSite);
//Result<String> result = ResultUtil.success("修改数据成功");
return result;
}
请求结果
参数x范围为-180到180,超出范围抛出异常
记录一些常用的校验注解
注解 | 验证的数据类型 | 说明 |
---|---|---|
@AssertFalse/@AssertTrue | Boolean | 验证注解的元素值是false/true |
@NotNull /@Null | 任意 | 验证注解的元素值不是空/是空 |
@Min/@DecimalMin(value=值) | 任何Number类型等 | 验证注解的元素值大于等于value值 |
@Max/@DecimalMax(value=值) | 任何Number类型等 | 验证注解的元素值小于等于value值 |
@Digits(integer=整数位数, fraction=小数位数) | 任何Number类型等 | 验证注解的元素值的整数位数和小数位数上限 |
@Size(min=下限, max=上限) | 字符串、Collection、Map、数组等 | 验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小 |
@Past /@Future | Date、Calendar、Time类库的日期类型等 | 验证注解的元素值(日期类型)比当前时间早/晚 |
@NotBlank | CharSequence子类型 | 验证注解的元素值不为空(应用于字符串且在比较时会去除字符串的首位空格) |
@Length(min=下限, max=上限) | CharSequence子类型 | 验证注解的元素值长度在min和max区间内 |
@NotEmpty | CharSequence子类型、Collection、Map、数组 | 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
@Range(min=最小值, max=最大值) | BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子类型和包装类型 | 验证注解的元素值在最小值和最大值之间 |
@Email(regexp=正则表达式,flag=标志的模式) | String、任何CharSequence的子类型 | 验证注解的元素值与指定的正则表达式匹配 |
@Pattern(regexp=正则表达式,flag=标志的模式) | String,任何CharSequence的子类型 | 验证注解的元素值与指定的正则表达式匹配 |
@Valid | 任何非原子类型 | 指定递归验证关联的对象 |