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

这篇具有很好参考价值的文章主要介绍了SpringBoot校验,DTO文件中常用的注解应用案例.。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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参数校验(推荐)            

2、文章来源地址https://www.toymoban.com/news/detail-658493.html

到了这里,关于SpringBoot校验,DTO文件中常用的注解应用案例.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot Redis 注解 拦截器来实现接口幂等性校验

    幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次 比如:订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多次回调, 必须处理重复回调 普通表单提交接口, 因为网络超时等原因多次点击提

    2024年01月19日
    浏览(62)
  • SpringBoot案例-登录校验-概述

    在未登录的情况下,我们也可以直接访问部门管理、员工管理等功能 由于Http协议是无状态的,即每次请求都是独立的,下一次的请求不会携带上一次的数据,服务器无法判断是否已经登录。 如何实现登录校验 在员工登录成功之后,服务器存储一个 登录标记 ,然后在 每一个

    2024年02月11日
    浏览(30)
  • springboot使用@Valid 和 @Validated 注解校验详解以及编写一个自定义全局异常类

    全局异常处理类 验证: ============================================== 导入所需要的包: 如果你是 springboot 项目,那么可以不用引入了,已经引入了,他就存在于最核心的 web 开发包里面。 如果你不是 springboot 项目,那么引入下面依赖即可: 新建三个实体类 实现一: 使用@Valid注解修

    2024年02月10日
    浏览(41)
  • Spring注解驱动开发之常用注解案例_告别在XML中配置Bean

    注解驱动开发就是不再使用Spring的bean.xml文件,改为纯使用注解的方式开发 @Configuration 此注解为配置类注解,相当于spring.xml文件,即配置类==配置文件 @Bean 给容器中注册一个Bean;类型为返回值的类型,id默认是用方法名作为id 示例 Person类(后续注解配置类中都会以此类举例),

    2024年01月21日
    浏览(51)
  • Spring Boot 中自定义数据校验注解

    在 Spring Boot 中,我们可以使用 JSR-303 数据校验规范来校验表单数据的合法性。JSR-303 提供了一些常用的数据校验注解,例如 @NotNull 、 @NotBlank 、 @Size 等。但是,在实际开发中,我们可能需要自定义数据校验注解来满足特定的需求。本文将介绍如何在 Spring Boot 中自定义数据校

    2024年02月10日
    浏览(54)
  • 基于MATLAB实现图像处理常用应用案例(附上100个仿真源码+数据)

    MATLAB是一款功能强大的图像处理软件,可以用于实现各种常见的图像处理应用。下面将介绍几个常见的图像处理应用案例。 图像去噪是图像处理中的一项重要任务,可以提高图像质量和视觉效果。MATLAB提供了多种图像去噪算法,如中值滤波、高斯滤波、小波去噪等。以中值滤

    2024年02月14日
    浏览(48)
  • 【Springboot系列】SpringBoot常用的一些注解

    强烈推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站: 人工智能 引言: Spring Boot 是当今 Java 开发领域中最受欢迎的框架之一,它的出现极大地简化了 Spring 应用程序的开发和部署过程。 其中,注解是 Spring Bo

    2024年04月09日
    浏览(63)
  • 详解SpringBoot的常用注解

    在SpringBoot中,注解是一种非常重要的编程方式,它可以简化代码,提高开发效率。本文将详细介绍SpringBoot中的常用注解,以及它们的使用方法和场景。 1.1 概述 @SpringBootApplication 是SpringBoot应用程序的核心注解,通常用于主类上。它包含了以下三个注解: @Configuration :表示该

    2024年02月13日
    浏览(87)
  • Springboot开发常用注解

    @RestController注解其实就是将 return 中的内容以 JSON字符串的形式返回客户端 @controller的详解 @Data详解 @RequestMapping @Builder @RequestBody @slf4j execution http协议及servlet JoinPoint

    2024年02月13日
    浏览(34)
  • Spring&SpringBoot常用注解

    在Spring和SpringBoot中,注解是一种非常重要的编程方式,它可以简化代码,提高开发效率。 @SpringBootApplication是SpringBoot应用程序的核心注解,通常用于主类上。它包含了以下三个注解: @Configuration:表示该类是一个配置类,用于定义Spring的配置信息。允许在 Spring 上下文中注册

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包