1,相关依赖
<!-- 参数验证 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2,实体类注解
一个字段上可以加多个注解
package com.hwq.common.model.dto;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
public class UserSaveDTO {
@NotBlank(message = "参数 name 不能为空")
private String name; // 用户名
@NotBlank(message = "参数 account 不能为空")
private String account; // 账号
@NotBlank(message = "参数 pwd 不能为空")
private String pwd; // 密码
}
3,已经提供的注解
注解 | 限制 |
---|---|
@Null | 限制只能为null |
@NotNull | 限制必须不为null |
@AssertFalse | 限制必须为false |
@AssertTrue | 限制必须为true |
@DecimalMax(value) | 限制必须为一个不大于指定值的数字 |
@DecimalMin(value) | 限制必须为一个不小于指定值的数字 |
@Digits(integer,fraction) | 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction |
@Max(value) | 限制必须为一个不大于指定值的数字 |
@Min(value) | 限制必须为一个不小于指定值的数字 |
@Future | 限制必须是一个将来的日期 |
@Past | 限制必须是一个过去的日期 |
@Pattern(value) | 限制必须符合指定的正则表达式的字符串 |
@Size(max,min) | 限制元素的长度必须在min到max之间 |
@Length(min,max ) | 限制字符串的长度范围,注意区分 size 和 length |
@NotEmpty | 限制注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
@NotBlank | 限制字符串为有效字符串,不为 null,去除两端空格不为空 |
验证注解的元素值是Email |
4,自定义注解
1,自定义一个注解
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD})
@Documented
@Constraint(validatedBy = MinAgeValidator.class) // 标明验证类
public @interface MinAge {
public int value() default 18;
public String message() default “”;
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
2,实现验证类
package com.hwq.common.annotate;
import org.springframework.stereotype.Component;
@Component
public class MinAgeValidator implements ConstraintValidator<MinAge,Integer> {
private Integer min;
@Override
public void initialize(MinAge minAge) {
this.min = minAge.value();
}
@Override
public boolean isValid(Integer value, ConstraintValidatorContext context) {
if (value != null) {
return value >= min;
}
return true;
}
}