SpringBoot校验,DTO文件中常用的注解应用案例.

在观看本篇文章之前,可以先参考我之前写的一篇文章 " Spring5,Service层对DTO文件进行数据格式校验. " ,这篇文章是介绍在 Service层 对DTO文件的校验。 以下方的 CompanyDTO 文件为例,讲解不同的注解使用场景,以及适用于那些数据类型。

未完待续........

1、需要引入的Maven依赖

XML 复制代码
		<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 文件

java 复制代码
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() {

    }
}
相关推荐
0和1的舞者21 小时前
高并发论坛系统:单元测试 + 接口自动化 + 性能测试 + CI/CD 全链路测试报告
java·测试开发·测试工具·jmeter·pytest·测试·测试报告
程序员鱼皮21 小时前
OpenClaw接入飞书保姆级教程,几分钟搞定手机养龙虾!
前端·人工智能·后端
Victor35621 小时前
MongoDB(36)如何使用聚合进行分组?
后端
天远云服21 小时前
天远企业司法认证API对接实战:PHP构建B2B供应链合规防火墙
大数据·开发语言·后端·node.js·php
Victor35621 小时前
MongoDB(37)如何使用聚合进行排序?
后端
空空kkk21 小时前
Java基础——代理
java·开发语言
野生技术架构师21 小时前
互联网大厂必备 Java 面试八股文真题解析
java·开发语言·面试
Rsun0455121 小时前
synchronized关键字的底层实现
java
毕设源码_廖学姐21 小时前
计算机毕业设计springboot古诗词学习App 基于SpringBoot的中华经典诗文数字化研习平台 SpringBoot框架下的传统诗词文化移动学习系统
spring boot·学习·课程设计
老约家的可汗21 小时前
C++篇之类和对象下
java·开发语言·c++