问答详情
源自:3-13 优化校验规则

为什么要引入hibernate-validator

在代码中没有看到使用hibernate-validator里面的内容呀

提问者:willwei 2019-01-22 16:07

个回答

  • 不知疲倦的旅者
    2019-01-22 20:01:35

    课程例讲解的很清楚了,在没有引入hibernate-validator之前,我们使用判空的方式来验证UserModel。

            //如果需要的信息为空,则抛出异常
            if (StringUtils.isEmpty(userModel.getName())
                   || userModel.getAge() == null
                   || userModel.getGender() == null
                   || StringUtils.isEmpty(userModel.getTelephone())
                   || StringUtils.isEmpty(userModel.getEncrptPassword())) {
                throw new BusinessException(EnumBussinessError.PARAMETER_VALIDATION_ERROR);
            }

    hibernate-validator是一个验证框架,可以大大简化验证的过程,增加了验证的细节

    首先我们对UserModel进行了改造

    @NotBlank(message = "用户名不能为空")
    private String name;
    
    @NotNull(message = "性别不能为空")
    private Byte gender;
    
    @NotNull(message = "年龄不能为空")
    @Min(value = 0, message = "年龄不能小于0")
    @Max(value = 150, message = "年龄不能大于150")
    private Integer age;
    
    @NotBlank(message = "手机号不能为空")
    private String telephone;
    
    private String registreMode;
    
    private String thirdPartyId;
    
    @NotBlank(message = "密码不能为空")
    private String encrptPassword;

    其次我们建立其了两个类,一个是ValidatorUtil,用来验证添加验证规则的UserModel;另一个类ValidatorResult,用来保存验证后的信息。

    验证代码就简化为:

    ValidatorResult validatorResult = validatorUtil.validate(userModel);
    if (validatorResult.getHasError()) {
        throw new BusinessException(EnumBussinessError.PARAMETER_VALIDATION_ERROR,validatorResult.getErrorMsg());
    }

    可以参考如下文章:

    SpringBoot 统一异常、数据校验处理