服务端数据校验

Hibernate Validator是Hibernate提供的一个开源框架,使用注解方式非常方便的实现服务端的数据校验。

Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint(约束) 的实现,除此之外还有一些附加的 constraint。

在日常开发中,Hibernate Validator经常用来验证bean的字段,基于注解,方便快捷高效。

常用注解如下:

  | **Constraint**                                     | **详细信息**                                                 |

| -------------------------------------------------- | ------------------------------------------------------------ |

| **@Valid**                                         | 被注释的元素是一个对象,需要检查此对象的所有字段值           |

| **@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(value)**                                | 被注释的元素必须符合指定的正则表达式                         |

| **@Email**                                         | 被注释的元素必须是电子邮箱地址                               |

| **@Length**                                        | 被注释的字符串的大小必须在指定的范围内                       |

| **@NotEmpty**                                      | 被注释的字符串的必须非空                                     |

| **@Range**                                         | 被注释的元素必须在合适的范围内                               |

| **@NotBlank**                                      | 被注释的字符串的必须非空                                     |

| **@URL(protocol=,host=,   port=,regexp=, flags=)** | 被注释的字符串必须是一个有效的url                            |

| **@CreditCardNumber**                              | 被注释的字符串必须通过Luhn校验算法,银行卡,信用卡等号码一般都用Luhn计算合法性 |

用法:

1)引入依赖

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
</dependency>

2)在po类加上注解

@Id
@KeySql(useGeneratedKeys = true)
private Long id;
@NotEmpty(message = "用户名不能为空!")
@Length(min = 4, max = 15, message = "长度在4-15")
private String username;// 用户名
//不被json化
@Length(min = 4, max = 15, message = "密码长度在4-15")
@JsonIgnore
private String password;// 密码
@Pattern(regexp = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$", message = "手机号不正确")
private String phone;// 电话

3)在controller中的接口参数中给对象加上@Valid

  @PostMapping("register")
    public Result register(@Valid User user, BindingResult result, @RequestParam("code") String code) {
//        if (result.hasFieldErrors()) {
//           throw new RuntimeException(result.getFieldErrors().stream().
//                   map(e -> e.getDefaultMessage()).collect(Collectors.joining("|")));
//      }
        userService.register(user, code);
        return new Result(ResponseStatusEnum.CREATED.getCode(),"创建成功");
    }
}

(加入BindingResult对象,将自己需要的数据提取出来处理 (可省略))即可完成数据校验.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值