?
? ? ? ?在觀看本篇文章之前,可以先參考我之前寫的一篇文章 “?Spring5,Service層對DTO文件進行數據格式校驗. ”? ,這篇文章是介紹在 Service層 對DTO文件的校驗。 以下方的?CompanyDTO 文件為例,講解不同的注解使用場景,以及適用于那些數據類型。
未完待續........
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;/*** 用于校驗的DTO文件.** @author moon* @version 1.0* @date 2022/11/22 11:45*/
@ApiModel(value = "公司", description = "參數")
@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 個字符", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})private String companyName;@ApiModelProperty(value = "公司編號")@NotBlank(message = "公司編號不能為空!", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})@Size(min = 1, max = 12, message = "公司編號長度為 1-12 個字符", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})private String companyNo;/*** 在這里,納稅人識別號可以是:空字符串 或者 15位格式 或者 18位格式 或者 20位格式.*/@ApiModelProperty(value = "納稅人識別號")@Pattern(regexp = "^$|^([0-9a-zA-Z]{15}|[0-9a-zA-Z]{18}|[0-9a-zA-Z]{20})$", message = "納稅人識別號格式不正確,請重新處理!", 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 個字符", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})private String email;/*** 在這里,賬戶可以是:11位手機號格式 或者 郵箱格式*/@ApiModelProperty(value = "賬號")@NotBlank(message = "賬號不能為空!", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})@Pattern(regexp = "^(1[3-9]\\d{9}|[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+)$", message = "賬號格式不正確,請重新處理;", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})private String account;/*** 在這里,數據來源可以是:新建、更新、導入。 非常適用于 "枚舉值" 類型的字段.*/@ApiModelProperty(value = "數據來源")@NotBlank(message = "數據來源不能為空!", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})@Pattern(regexp = "^(新建|更新|導入)$", message = "賬號格式不正確,請重新處理;", groups = {ValidGroup.Insert.class, ValidGroup.Update.class, ValidGroup.Import.class})private String dataSource;// ---------------- 非數據庫表字段 ----------------// ---------------- 構造函數 ----------------/**** 無參構造函數** @return* @author moon 2023/7/25 15:01*/public CompanyDTO() {}
}