校验注解在这2个包下org.hibernate.validator.constraints ; javax.validation.constraints
参考:
你还在手动对数据进行校验,快来使用validation吧_喜欢技术的小璐的博客-优快云博客
@Valid 和 @Validated 注解用法详解_zyqok的博客-优快云博客_@valid @validated
@Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated_昌杰的攻城狮之路的博客-优快云博客_@validated注解
@Valid注解是javax包下的注解,需配合BindingResult类。用@Validated更方便,只需添加全局异常处理类,处理校验失败情况。
springboot版本:2.3.10.RELEASE
maven:
<!--@Valid -@Validated 校验-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
全局异常处理
/**
* 处理校验异常
*
* @param request
* @param e
* @return
*/
@ExceptionHandler(value = MethodArgumentNotValidException.class)
@ResponseBody
public BaseResponse validExceptionHandler(HttpServletRequest request, MethodArgumentNotValidException e) {
log.error("校验异常:", e);
ObjectError objectError = e.getBindingResult().getAllErrors().get(0);
return new BaseResponse(400, objectError.getDefaultMessage());
}
在属性上加上@Valid 可级联验证
@ApiModelProperty(value = "巡检点集合")
@Valid
List<PointVO> pointIds;
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class PointVO{
@ApiModelProperty(value="序列,默认0")
Integer seq;
@NotEmpty
@ApiModelProperty(value="巡检点id")
Integer PointId;
}