当前端传入多条数据,如果一条一条效验过于费时,于是使用框架进行效验
1.添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2.在controller入参上添加注解@Validated
@PostMapping
public Result<Void> addEmploy(@Validated @RequestBody AddEmployDTO addEmployDTO){
return Result.success();
}
3.再要效验的参数属性上添加效验规则
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddEmployDTO {
@Size(min = 18, max = 18, message = "身份证号必须是18位")
private String idNumber;
@NotNull(message = "姓名不能为空")
@Size(min = 2, max = 10, message = "姓名只能是2-10位")
private String name;
@NotNull(message = "手机号不能为空")
@Pattern(regexp = "1[0-9]{10}", message = "手机号格式有误")
private String phone;
@Min(0)
@Max(1)
private String sex;
@NotNull(message = "用户名不能为空")
@Size(min = 2, max = 10, message = "用户名只能是2-10位")
private String username;
}
4.修改全局异常处理器,增加对MethodArgumentNotValidException的处理
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public Result methodNotValid(MethodArgumentNotValidException ex){
BindingResult bindingResult = ex.getBindingResult();
//拿到所有的错误信息
List<ObjectError> allErrors = bindingResult.getAllErrors();
//拼接返回
StringBuilder sb = new StringBuilder();
for (ObjectError allError : allErrors) {
String defaultMessage = allError.getDefaultMessage();
sb.append(defaultMessage).append(";");
}
return Result.error(sb.toString());
}
}