在 RESTful 的接口服務中,會有各類各樣的入參,咱們不可能徹底不作任何校驗就直接進入到業務處理的環節,一般咱們會有一個基礎的數據驗證的機制,待這些驗證過程完畢,結果無誤後,參數纔會進入到正式的業務處理中。java
而數據驗證又分爲兩種git
第二中只能通常只能在業務中校驗,但第一種能夠經過 Hibernate-Validator 來作無業務關聯的規則性驗證。web
Hibernate-Validator的主要使用的方式就是註解的形式,而且是「零配置」的,無需配置也可使用。正則表達式
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.17.Final</version>
</dependency>
複製代碼
若是項目的框架是 spring boot 的話,在 spring-boot-starter-web 中已經包含了 Hibernate-validator 的依賴。 spring
來自 javax.validation.constraints 的註解數據庫
import javax.validation.constraints.*;
//被註釋的元素,值必須是一個字符串,不能爲null,且調用trim()後,長度必須大於0
@NotBlank(message = "")
//被註釋的元素,值不能爲null,但能夠爲"空",用於基本數據類型的非空校驗上,並且被其標註的字段可使用 @size、@Max、@Min 等對字段數值進行大小的控制
@NotNull(message = "")
//被註釋的的元素,值不能爲null,且長度必須大於0,通常用在集合類上面
@NotEmpty(message = "")
//被註釋的元素必須符合指定的正則表達式。
@Pattern(regexp = "", message = "")
//被註釋的元素的大小必須在指定的範圍內。
@Size(min =, max =)
//被註釋的元素,值必須是一個數字,且值必須大於等於指定的最小值
@Min(value = long之內的值, message = "")
//被註釋的元素,值必須是一個數字,且值必須小於等於指定的最大值
@Max(value = long之內的值, message = "")
//被註釋的元素,值必須是一個數字,其值必須大於等於指定的最小值
@DecimalMin(value = 能夠是小數, message = "")
//被註釋的元素,值必須是一個數字,其值必須小於等於指定的最大值
@DecimalMax(value = 能夠是小數, message = "")
//被註釋的元素,值必須爲null
@Null(message = "")
//被註釋的元素必須是一個數字,其值必須在可接受的範圍內
@Digits(integer =, fraction =)
//被註釋的元素,值必須爲true
@AssertTrue(message = "")
//被註釋的元素,值必須爲false
@AssertFalse(message = "")
//被註釋的元素必須是一個過去的日期
@Past(message = "")
//被註釋的元素必須是一個未來的日期
@Future(message = "")
//被註釋的元素必須是電子郵件地址
@Email(regexp = "", message = "")
複製代碼
來自 org.hibernate.validator.constraints 的註解bash
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
//被註釋的元素必須在合適的範圍內
@Range(min =, max =, message = "")
//被註釋的字符串的大小必須在指定的範圍內
@Length(min =, max =, message = "")
複製代碼
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
@Data
public class RegisterDTO {
@NotBlank(message = "用戶名不能爲空")
private String userName;
@NotBlank(message = "密碼不能爲空")
private String password;
@NotBlank(message = "真實姓名不能爲空")
private String realName;
@Range(min = 0, max = 99, message = "年齡應該在0到99之間")
private Integer age;
@Pattern(regexp = "男|女", message = "必須是男或女")
private String sex;
@Pattern(regexp = "\\d{3}-\\d{8}|\\d{4}-\\d{7}|\\d{11}", message = "號碼不正確")
private String telephone;
}
複製代碼
注意使用@NotBlank等註解時,必定要和@valid一塊兒使用,否則@NotBlank不起做用 框架