目錄
1、需要引入的Maven依賴
2、CompanyDTO 文件
3、對(duì) DTO文件中使用的校驗(yàn)注解說明
參考文章:
? ? ? ?在觀看本篇文章之前,可以先參考我之前寫的一篇文章 “?Spring5,Service層對(duì)DTO文件進(jìn)行數(shù)據(jù)格式校驗(yàn). ”? ,這篇文章是介紹在 Service層 對(duì)DTO文件的校驗(yàn)。 以下方的?CompanyDTO 文件為例,講解不同的注解使用場景,以及適用于那些數(shù)據(jù)類型。
1、需要引入的Maven依賴
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.5.Final</version>
</dependency>
2、CompanyDTO 文件
package com.moon.learning.dto;
import com.moon.learning.validation.ValidGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import javax.validation.constraints.*;
import java.io.Serializable;
/**
* 用于校驗(yàn)的DTO文件.
*
* @author moon
* @version 1.0
* @date 2022/11/22 11:45
*/
@ApiModel(value = "公司", description = "參數(shù)")
@Data
@AllArgsConstructor
@Builder
public class CompanyDTO implements Serializable {
@ApiModelProperty(value = "ID主鍵")
@NotNull(message = "ID主鍵不能為空!", groups = {ValidGroup.Update.class})
private Long id;
@ApiModelProperty(value = "公司名稱")
@NotBlank(message = "公司名稱不能為空!", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
@Size(min = 1, max = 20, message = "公司名稱長度為 1-20 個(gè)字符", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
private String companyName;
@ApiModelProperty(value = "公司編號(hào)")
@NotBlank(message = "公司編號(hào)不能為空!", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
@Size(min = 1, max = 12, message = "公司編號(hào)長度為 1-12 個(gè)字符", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
private String companyNo;
/**
* 在這里,納稅人識(shí)別號(hào)可以是:空字符串 或者 15位格式 或者 18位格式 或者 20位格式.
*/
@ApiModelProperty(value = "納稅人識(shí)別號(hào)")
@Pattern(regexp = "^$|^([0-9a-zA-Z]{15}|[0-9a-zA-Z]{18}|[0-9a-zA-Z]{20})$", message = "納稅人識(shí)別號(hào)格式不正確,請重新處理!", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
private String taxNumber;
@ApiModelProperty(value = "電子郵箱")
@Email(message = "郵箱格式不正確", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
@Size(max = 50, message = "郵箱長度不能超過 50 個(gè)字符", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
private String email;
/**
* 在這里,賬戶可以是:11位手機(jī)號(hào)格式 或者 郵箱格式
*/
@ApiModelProperty(value = "賬號(hào)")
@NotBlank(message = "賬號(hào)不能為空!", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
@Pattern(regexp = "^(1[3-9]\\d{9}|[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+)$", message = "賬號(hào)格式不正確,請重新處理;", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
private String account;
/**
* 在這里,數(shù)據(jù)來源可以是:新建、更新、導(dǎo)入。 非常適用于 "枚舉值" 類型的字段.
*/
@ApiModelProperty(value = "數(shù)據(jù)來源")
@NotBlank(message = "數(shù)據(jù)來源不能為空!", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
@Pattern(regexp = "^(新建|更新|導(dǎo)入)$", message = "賬號(hào)格式不正確,請重新處理;", groups = {ValidGroup.Insert.class, ValidGroup.Update.class, ValidGroup.Import.class})
private String dataSource;
// ---------------- 非數(shù)據(jù)庫表字段 ----------------
// ---------------- 構(gòu)造函數(shù) ----------------
/***
* 無參構(gòu)造函數(shù)
*
* @return
* @author moon 2023/7/25 15:01
*/
public CompanyDTO() {
}
}
3、對(duì) DTO文件中使用的校驗(yàn)注解說明
3-1、@NotNull 注解,適用于任何數(shù)據(jù)類型的屬性,不過我們一般使用在 Long類型、Integer類型 這類數(shù)字類型中,表示屬性不能為null。
3-2、@NotBlank 注解,適用于字符串類型的屬性,表示 屬性不能為 null、不能為 ""、不能為 " "(空格字符串)。
3-3、@Size 注解, 適用于字符串、數(shù)組、集合類型的屬性,用于判斷 字符串、數(shù)組、集合 的長度。
3-4、@Pattern 注解,適用于字符串類型的屬性,通過編寫正則表達(dá)式來判斷屬性值是否符合要求。常用的正則表達(dá)式類型有:屬性值為空、屬性值為對(duì)應(yīng)的枚舉值、屬性值符合郵箱格式、電話號(hào)碼格式等等。
? ? ? ? 在上文?CompanyDTO 文件中,taxNumber屬性、account屬性、dataSource屬性 均使用了?@Pattern 注解,可以作為參考。
3-5、@Email 注解,適用于字符串類型的屬性,判斷屬性的值是否符合郵箱格式。當(dāng)屬性值為null是,校驗(yàn)不會(huì)報(bào)錯(cuò)。
除了上述幾個(gè)常用的注解外,還有其他的注解,例如:@DecimalMax、@DecimalMin、@Digits、@Future、@Max、@Min、@Range、@Length 等等,大家根據(jù)自己的實(shí)際需求,自主選擇。
參考文章:
1、?SpringBoot參數(shù)校驗(yàn)(推薦) ? ? ? ? ? ?文章來源:http://www.zghlxwxcb.cn/news/detail-658493.html
2、文章來源地址http://www.zghlxwxcb.cn/news/detail-658493.html
到了這里,關(guān)于SpringBoot校驗(yàn),DTO文件中常用的注解應(yīng)用案例.的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!