使用Hibernate-Validate进行参数校验

  1. 在实体属性中添加注解
    @NotNull : 用在基本类 型上 不能为null 但可以为空字符串
    @NotEmpty : 用在集合类上 不能为空 并且长度必须大于0
    @NotBlank : 只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
    @Length:表示长度
    @Pattern:表示正则表达式
    @Email:表示邮箱格式
    @Min:最小值
    @Max:最大值 更多注解看后面
	@NotBlank(message = "项目不能为空")
	@Length(max = 12, message = "用户真实姓名不能超过12位")
	@Length(min = 11, max = 11, message = "手机号长度不正确")
	@Email
	@Min(value = 0, message = "最小值为0")
	@Max(value = 2, message = "最大值为2")
	@ApiModelProperty(value = "项目id")
	@TableField("PROJECT_ID")
	private String projectId;
    
    @NotBlank(message = "手机号不能为空")
    @Pattern(regexp = "^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\\d{8})$", message = "手机号格式不正确")
    private String mobile;
   
    @NotBlank(message = "验证码不能为空")
    private String smsCode;
  1. Controller中请求实体添加@Valid注解
    @PostMapping("login")
    public GraceJSONResult login(@Valid @RequestBody RegistLoginBO registLoginBO,
                                      HttpServletRequest request) throws Exception {
  1. 全局异常捕获处理类中添加处理逻辑
    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseBody
    public GraceJSONResult returnNotValidException(MethodArgumentNotValidException e) {
        BindingResult result = e.getBindingResult();
        Map<String, String> errors = getErrors(result);
        return GraceJSONResult.errorMap(errors);
    }

    public Map<String, String> getErrors(BindingResult result) {

        Map<String, String> map = new HashMap<>();

        List<FieldError> errorList = result.getFieldErrors();
        for (FieldError fe : errorList) {
            // 错误所对应的属性字段名
            String field = fe.getField();
            // 错误信息
            String message = fe.getDefaultMessage();

            map.put(field, message);
        }

        return map;
    }

你可能感兴趣的:(Java,java)