其他的文章
公共模块:
http://www.haijin.xyz/article/930
之前的参数校验:
http://www.haijin.xyz/list/article/181
1、引入maven依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2、相关配置:
/**
* 通用异常处理参数校验相关异常
*
* @author system
*/
@Slf4j
@RestControllerAdvice(assignableTypes = TestController.class) // 针对当前的接口进行校验拦截
@Order(1)
public class ValidationExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResultData<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException e) {
String errorMessage = Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage();
return ResultData.builder()
.code(ReturnCodeEnum.RC999.getCode())
.message(errorMessage)
.build();
}
@ExceptionHandler(ConstraintViolationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResultData<Object> handleConstraintViolation(ConstraintViolationException e) {
String errorMessage = e.getMessage();
return ResultData.builder()
.code(ReturnCodeEnum.RC999.getCode())
.message(errorMessage)
.build();
}
@ExceptionHandler(MissingServletRequestParameterException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResultData<Object> handleMissingServletRequestParameter(MissingServletRequestParameterException e) {
String errorMessage = "参数不能为空:" + e.getParameterName();
return ResultData.builder()
.code(ReturnCodeEnum.RC999.getCode())
.message(errorMessage)
.build();
}
}
3、TestController:
@GetMapping("/test/list")
@ResponseBody
public ResultData<Object> queryVideoList(
@RequestParam("type") @NotNull(message = "参数不能为空:type") Integer type) {
4、常用注解
| 注解 | 作用场景 | 示例 |
|---|---|---|
@NotBlank |
字符串非空(非 null + 非空白) | @NotBlank(message = "姓名不能为空") |
@NotNull |
任意类型非 null | @NotNull(message = "年龄不能为空") |
@NotEmpty |
集合 / 数组非空(长度 > 0) | @NotEmpty(message = "爱好不能为空") |
@Email |
邮箱格式校验 | @Email(message = "邮箱格式错误") |
@Min(value) |
数字最小值 | @Min(value = 18, message = "年龄最小18") |
@Max(value) |
数字最大值 | @Max(value = 60, message = "年龄最大60") |
@Pattern(regexp) |
正则表达式校验 | @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号错误") |
@Size(min, max) |
字符串 / 集合长度范围 | @Size(min = 6, max = 20, message = "密码长度6-20") |