当前位置: 首页 > news >正文

SpringBoot校验,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() {}
}

http://www.lryc.cn/news/122771.html

相关文章:

  • Qt 窗口随鼠标移动效果
  • 大数据Flink(五十九):Flink on Yarn的三种部署方式介绍以及注意
  • mac-右键-用VSCode打开
  • tkinter+爬虫+pygame实现音乐播放器
  • css 实现 html 元素内文字水平垂直居中的N种方法
  • 数据结构-队列的实现(C语言版)
  • Vue.js 生命周期详解
  • 矩阵定理复习记录
  • Jenkins+Docker+SpringCloud微服务持续集成项目优化和微服务集群
  • 认识 spring 中的事务 与 事务的传播机制
  • PHP中的16个危险函数
  • 11、Nvidia显卡驱动、CUDA、cuDNN、Anaconda及Tensorflow Pytorch版本
  • 将数据库文件压缩并上传到文件服务器
  • docker — 容器网络
  • 腾讯面试题:使用Redis分布式锁可能会出现哪些问题?
  • 直接在html中引入Vue.js的cdn来实现Vue3的组合式API
  • YAPi在线接口文档简单案例(结合Vue前端Demo)
  • Java基础篇--Runtime类
  • 数字后端笔试题(1)DCG后congestion问题
  • 数据结构:交换排序
  • SpringBoot复习:(42)WebServerCustomizer的customize方法是在哪里被调用的?
  • 年至年的选择仿elementui的样式
  • 分类过程中的一种遮挡现象
  • 下一代服务架构:单体架构-->分布式架构-->微服务(DDD)-->软件定义架构(SDF with GraphEngine)
  • excel 之 VBA
  • 【数学建模】--聚类模型
  • css3新增选择器总结
  • 0基础学C#笔记10:归并排序法
  • nlohmann json:通过for遍历object和array
  • 适配器模式:将不兼容的接口转换为可兼容的接口