一.添加参数校验依赖
<!--参数校验依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
二.在controller的入参加上注解@Validated
@PostMapping
@ApiOperation("新增员工")
public Result<Void> addEmployee(@Validated @RequestBody AddEmployeeDTO addEmployeeDTO){
employeeService.addEmployee(addEmployeeDTO);
return Result.success();
}
三.在要校验的参数属性上添加校验规则
@NotNull(message = "用户名不能为空")
@NotBlank(message = "用户名不能为空")
@Size(min = 2,max = 10,message = "用户名只能是2-10位")
private String username;
@NotNull(message = "手机号不能为空")//判断是非为null
@NotBlank(message = "手机号不能为空")//判断是否为空字符串 ""
@Pattern(regexp = "1[0-9]{10}",message = "手机号格式有误")//正则表达式
private String phone;
四.修改全局异常处理器,增加对MethodArgumentNotValidException的处理
@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());
}