为什么要用?
更加清晰的逻辑
降低空指针风险
提高代码可读性
增加代码可维护
最重要的是优雅
前提:
导入hibernate-validator依赖
<!-- Hibernate Validator --> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.2.5.Final</version> </dependency>
用法介绍 :
@NotBlank:
对字符串(String)进行校验;配合@Size注解可以校验字符串长度
(顺序是先判断空值再判断长度)
@NotNull:
对基本数据类型(int、Integer、long、double...)和对象进行校验
配合@Max、@Min可设置最大值或最小值
@NotEmpty
对集合类型(List...)进行校验;配合@Size注解可以校验集合长度
@Size:
message:自定义的错误信息
注:
对应的注解校验对应的参数,对应不上可能会出现注解不起作用或报错等问题
(建议多试试)
案例:
创建Student对象,参数对应校验的注解
核心代码
ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); //通过buildDefaultValidatorFactory()拿到一个验证器工厂,用于创建验证实例 Validator validator = factory.getValidator(); //getValidator拿到一个验证器对象 Set<ConstraintViolation<Student>> validate = validator.validate(student); //调用validate对student对象进行验证,并返回一个Set集合 for (ConstraintViolation<Student> studentConstraintViolation : validate) { System.out.println(studentConstraintViolation.getMessage()); } //遍历打印每个约束违规对象
测试:
封装Student对象,运行,控制台打印错误信息
总结:
这是只是在main方法中进行简单测试
实际业务中,可在Controller层中加入@Valid注解,也能返回错误信息
也可以对insert或update等操作进行相对应的分组
或写公共方法,对传入的参数进行校验,抛出自定义异常并返回给前端Set内的错误信息
也可以对验证器进行自定义配置(这里使用的默认配置)
具体使用方法可按照业务需求进行调整和修改