目录
1、需要引入的Maven依赖
2、CompanyDTO 文件
3、对 DTO文件中使用的校验注解说明
参考文章:
在观看本篇文章之前,可以先参考我之前写的一篇文章 “ 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() {
}
}
3、对 DTO文件中使用的校验注解说明
3-1、@NotNull 注解,适用于任何数据类型的属性,不过我们一般使用在 Long类型、Integer类型 这类数字类型中,表示属性不能为null。
3-2、@NotBlank 注解,适用于字符串类型的属性,表示 属性不能为 null、不能为 ""、不能为 " "(空格字符串)。
3-3、@Size 注解, 适用于字符串、数组、集合类型的属性,用于判断 字符串、数组、集合 的长度。
3-4、@Pattern 注解,适用于字符串类型的属性,通过编写正则表达式来判断属性值是否符合要求。常用的正则表达式类型有:属性值为空、属性值为对应的枚举值、属性值符合邮箱格式、电话号码格式等等。
在上文 CompanyDTO 文件中,taxNumber属性、account属性、dataSource属性 均使用了 @Pattern 注解,可以作为参考。
3-5、@Email 注解,适用于字符串类型的属性,判断属性的值是否符合邮箱格式。当属性值为null是,校验不会报错。
除了上述几个常用的注解外,还有其他的注解,例如:@DecimalMax、@DecimalMin、@Digits、@Future、@Max、@Min、@Range、@Length 等等,大家根据自己的实际需求,自主选择。
参考文章:
1、 SpringBoot参数校验(推荐) 文章来源:https://www.toymoban.com/news/detail-658493.html
2、文章来源地址https://www.toymoban.com/news/detail-658493.html
到了这里,关于SpringBoot校验,DTO文件中常用的注解应用案例.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!