使⽤validation校验BigDecimal
使⽤validation校验实体类中的字段
在新增的时候,controller层接⼝使⽤@RequestBody接收前端传过来的参数,针对body中的参数,使⽤validation进⾏校验,本篇记录使⽤validation校验BigDecimal格式的字段。
实体类
/**
* @author kozo
* @date 2021/4/13 22:53
*/
@Data
public class BigDecimalValidationEntity {
/**
* 这⾥amount类型是BigDecimal, @Digits, @DecimalMin也是针对数值的校验
* 但是使⽤字符串传值,校验也能⽣效,只要字符串⾥⾯是数字就⾏
*/
@Digits(integer =9, fraction=2, message ="amount格式不正确")
@DecimalMin(value ="0.00", message ="amount格式不正确")
@NotNull(message ="amount不为空")bigdecimal转换为integer
private BigDecimal amount;
}
接⼝
@PostMapping("decimalTest")
public String decimalTest(@RequestBody@Validated BigDecimalValidationEntity entity){
System.out.Amount());
return String.Amount());
}
统⼀异常处理
这⾥只是简单的返回注解中的字符串信息,在具体的业务中可以把这⾥的getDefaultMessage()获取的信息放到具体的包装中返回。
@ControllerAdvice
@ResponseBody
public class MyExceptionHandler {
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public String methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e){
BindingResult().getFieldError().getDefaultMessage();
}
}
注解说明
@Digits(integer =9, fraction=2, message ="amount格式不正确")
digit是数位的意思,这⾥的integer意思整数最多有⼏位,fraction意思⼩数最多有⼏位,只是划定了传⼊参数的范围,前端传值的时候可以⽤字符串(只要字符串⾥⾯都是数字就⾏)、数字;
@DecimalMin(value ="0.00", message ="amount格式不正确")
decimal的最⼩值,传⼊参数必须⼤于等于value⾥⾯的值;
@NotNull(message ="amount不为空")
传⼊参数不为空,对于BigDecimal格式,⽤@NotNull注解,如果传参是空字符串或者只有空格的字符串,也⽆法通过校验。
ps:如果字段的类型是String,建议使⽤@NotBlank注解。
⼀些测试验证(可以不⽤看了)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论