使用Hibernate验证用户信息

    1.注解

@Null   被注释的元素必须为 null   
@NotNull    被注释的元素必须不为 null   
@AssertTrue     被注释的元素必须为 true   
@AssertFalse    被注释的元素必须为 false   
@Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值   
@Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值   
@DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值   
@DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值   
@Size(max=, min=)   被注释的元素的大小必须在指定的范围内   
@Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内   
@Past   被注释的元素必须是一个过去的日期   
@Future     被注释的元素必须是一个将来的日期   
@Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式   
   
Hibernate Validator 附加的 constraint   
@NotBlank(message =)   验证字符串非null,且长度必须大于0   
@Email  被注释的元素必须是电子邮箱地址   
@Length(min=,max=)  被注释的字符串的大小必须在指定的范围内   
@NotEmpty   被注释的字符串的必须非空   
@Range(min=,max=,message=)  被注释的元素必须在合适的范围内

2.需要在方法上添加  @Valid 注解 以及可以  BindingResult 用来搜集验证时的错误信息

 @ApiOperation(value = "修改用户信息", notes = "修改用户信息", httpMethod = "POST")
    @PostMapping("update")
    public IMOOCJSONResult update(@ApiParam(name = "userId",value = "用户id",required = true)
                                  @RequestParam String userId,
                                  @RequestBody @Valid CenterUserBO centerUserBO,
                                  BindingResult result,
                                  HttpServletRequest request, HttpServletResponse response
                                  ){
        //判断BindingResult是否保存错误验证信息,否则直接return
        if (result.hasErrors()){
            Map<String,String> errorMap=getErrors(result);
            return IMOOCJSONResult.errorMap(errorMap);
        }

        Users usersResult=centerUserService.updateUserInfo(userId,centerUserBO);

        usersResult=setNullProperty(usersResult);
        CookieUtils.setCookie(request,response,"user", JsonUtils.objectToJson(usersResult),true);

        return IMOOCJSONResult.ok();
    }

3.添加相应方法搜集错误信息

private Map<String,String> getErrors(BindingResult result){
    Map<String,String> map=new HashMap<>();
    List<FieldError> errorList=result.getFieldErrors();
    for (FieldError error : errorList) {
        //发生验证错误所对应的某一个属性
        String errorField=error.getField();
        //验证错误信息
        String errorMsg=error.getDefaultMessage();
        map.put(errorField,errorMsg);

    }
    return map;
}

 

4.对象上添加相应注解

@ApiModelProperty(value="用户名", name="username", example="json", required = false)
    private String username;
    @ApiModelProperty(value="密码", name="password", example="123456", required = false)
    private String password;
    @ApiModelProperty(value="确认密码", name="confirmPassword", example="123456", required = false)
    private String confirmPassword;


    @NotBlank(message = "用户昵称不能为空")
    @Length(max = 12, message = "用户昵称不能超过12位")
    @ApiModelProperty(value="用户昵称", name="nickname", example="杰森", required = false)
    private String nickname;

    @Length(max = 12, message = "用户真实姓名不能超过12位")
    @ApiModelProperty(value="真实姓名", name="realname", example="杰森", required = false)
    private String realname;

    @Pattern(regexp = "^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\\d{8})$", message = "手机号格式不正确")
    @ApiModelProperty(value="手机号", name="mobile", example="13999999999", required = false)
    private String mobile;

    @Email
    @ApiModelProperty(value="邮箱地址", name="email", example="imooc@imooc.com", required = false)
    private String email;

    @Min(value = 0, message = "性别选择不正确")
    @Max(value = 2, message = "性别选择不正确")
    @ApiModelProperty(value="性别", name="sex", example="0:女 1:男 2:保密", required = false)
    private Integer sex;
    @ApiModelProperty(value="生日", name="birthday", example="1900-01-01", required = false)
    private Date birthday;

5.测试...................

posted @ 2020-12-10 16:39  SoToHard  阅读(92)  评论(0编辑  收藏  举报