【校验处理】⼀、JavaBeanValidation验证
在真实的开发中,我们经常会遇到需要对数据进⾏校验的业务,那么本篇⽂章对此进⾏总结。暂时总结三种⽅法,⼤家可以根据需要选择使⽤。⼀、Java Bean Validation 验证 ⼆、SpringBoot Validate 统⼀处理 三、Spring Validation 校验处理
本篇⽂章采⽤第⼀种Java Bean Validation的验证⽅式。话不多说,直接上代码。1. 引⼊依赖
注意:java bean validation参数验证,在使⽤的时候,有时候会报错,原因是跟spring版本不兼容,这⾥演⽰的版本如下:
org.hibernate
hibernate-validator 5.1.1.Final
javax.validation validation-api 1.1.0.Final
org.springframework.boot spring-boot-dependencies 2.3.1.RELEASE pom
import
2. 测试实体类
注意:将需要的校验规则直接通过注解写在实体类对应字段上即可
@Data
@AllArgsConstructorpublic class Test {
@Length(min = 1,max = 5,message = \"姓名长度应该在1-5之间\") private String name;
@Range(min = 1,max = 100,message = \"年龄应该在1-100之间\") private Integer age;
@DecimalMax(value = \"100.00\体重有些超标哦\") @DecimalMin(value = \"60.00\多吃点饭吧\") private BigDecimal weight;
@Future(message = \"元素必须是⼀个将来的⽇期\") @JsonFormat(pattern=\"yyyy-MM-dd HH:mm:ss\") private Date date;
@AssertTrue(message = \"此值只能为true\") private Boolean isuser;
@Email(message = \"邮箱地址⽆效\") private String email;}
3. 校验⼯具类注意:
(1)如果想要使⽤,直接调⽤ValidationUtils.validate参数直接传实体对象即可。
(2)validate⽅法可以优化,常见的是新建⼀个set集合,将所有的提⽰消息放到set中之后返回即可。
public class ValidationUtils implements Serializable { public static void main(String[] args) {
Test test = new Test(\"张三张三张三\new BigDecimal(110.00),new Date(),false,\"12345\"); validate(test); }
private static ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); public static String validate(T t) {try {
Validator validator = factory.getValidator();
Set> constraintViolations = validator.validate(t); for (ConstraintViolation constraintViolation : constraintViolations) {System.out.println(\"invalidvalue: \"+constraintViolation.getInvalidValue() == null?\"\":constraintViolation.getInvalidValue().toString()+\" propertypath: \"+constraintViolation.getPropertyPath()+\" message: \"+constraintViolation.getMessage }
} catch (Exception e) { e.printStackTrace(); }
return \"\"; }}
4. 总结⼀波实体类上⽀持的注解
参考:持续更新