首页 > 编程语言 >java 手动校验dto

java 手动校验dto

时间:2023-05-05 19:34:03浏览次数:45  
标签:UserDTO java dto 校验 validator Validator DTO userDTO

  1 在 Java 中进行手动校验 DTO 的方法有很多种,这里提供一种常用的校验方法,使用 Hibernate Validator 实现:
  2 
  3 1. 添加依赖
  4 
  5 首先需要在 Maven 或 Gradle 中添加 Hibernate Validator 的依赖:
  6 
  7 Maven:
  8 
  9 ```xml
 10 <dependency>
 11     <groupId>org.hibernate.validator</groupId>
 12     <artifactId>hibernate-validator</artifactId>
 13     <version>6.2.0.Final</version>
 14 </dependency>
 15 ```
 16 
 17 Gradle:
 18 
 19 ```groovy
 20 implementation 'org.hibernate.validator:hibernate-validator:6.2.0.Final'
 21 ```
 22 
 23 2. 创建 DTO 类
 24 
 25 假设我们有一个 UserDTO 类需要校验,此类中包含了一些必填字段和某些属性的长度范围限制。
 26 
 27 ```java
 28 public class UserDTO {
 29     @NotBlank(message = "用户名不能为空")
 30     private String username;
 31 
 32     @NotBlank(message = "密码不能为空")
 33     @Size(min = 6, max = 20, message = "密码长度必须在 {min} 到 {max} 之间")
 34     private String password;
 35 
 36     @Email(message = "邮箱格式不正确")
 37     private String email;
 38 
 39     // getters and setters
 40 }
 41 ```
 42 
 43 在类中使用注解来标记要校验的字段,并为每个注解设置校验规则。例如:
 44 
 45 - `@NotBlank` 注解用来校验字符串不能为空格或空字符串。
 46 - `@Size` 注解用来校验字符串、数组、集合或 Map 的大小是否在指定范围内。
 47 - `@Email` 注解用来校验字符串是否符合电子邮件格式。
 48 
 49 3. 编写校验逻辑
 50 
 51 使用 Hibernate Validator 的 `Validator` 接口进行 DTO 的校验:
 52 
 53 ```java
 54 import javax.validation.Validation;
 55 import javax.validation.Validator;
 56 import javax.validation.ValidatorFactory;
 57 import java.util.Set;
 58 
 59 public class UserValidator {
 60     private static Validator validator;
 61 
 62     static {
 63         ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
 64         validator = factory.getValidator();
 65     }
 66 
 67     public static boolean validate(UserDTO userDTO) {
 68         Set<ConstraintViolation<UserDTO>> violations = validator.validate(userDTO);
 69         if (violations.size() > 0) {
 70             for (ConstraintViolation<UserDTO> violation : violations) {
 71                 System.out.println(violation.getMessage());
 72             }
 73             return false;
 74         }
 75         return true;
 76     }
 77 }
 78 ```
 79 
 80 在此示例中,我们创建了一个名为 `UserValidator` 的类,其中包含了一个 `validate` 方法用于执行校验。
 81 
 82 `ValidatorFactory` 和 `Validator` 的初始化应该在静态代码块中完成,这样所有的校验操作都会共享一个实例,以提高效率。
 83 
 84 `validate` 方法中,我们调用 `validator.validate` 方法来校验传入的 `UserDTO` 对象。如果校验失败,我们将依次输出每个不合法字段对应的错误信息,并返回 false,表示 DTO 校验失败。否则,返回 true,表示 DTO 校验通过。
 85 
 86 4. 使用校验逻辑
 87 
 88 我们可以在需要校验的地方调用上述校验逻辑,例如:
 89 
 90 ```java
 91 public static void main(String[] args) {
 92     UserDTO userDTO = new UserDTO();
 93     userDTO.setUsername("");
 94     userDTO.setPassword("1234");
 95     userDTO.setEmail("invalid-email");
 96 
 97     boolean valid = UserValidator.validate(userDTO);
 98     if (!valid) {
 99         System.out.println("DTO validation failed");
100     }
101 }
102 ```
103 
104 在此示例中,我们创建了一个 UserDTO 对象,并设置其中的一些不合法属性。然后调用 `UserValidator.validate` 方法进行校验,如果返回 false,则说明 DTO 校验失败。
View Code

 

标签:UserDTO,java,dto,校验,validator,Validator,DTO,userDTO
From: https://www.cnblogs.com/lljboke/p/17375175.html

相关文章

  • java获取jdk、系统、服务器等信息
    1、获取jdk信息System.out.println(System.getProperty("java.version"));System.out.println(System.getProperty("java.vendor"));System.out.println(System.getProperty("java.vendor.url"));System.......
  • 关于java反射机制基础资料
    Java的反射机制允许在程序运行期间,借助反射API获取类的内部信息,并能直接操作对象的内部属性及方法。Java反射机制提供的功能:在运行时,使用反射分析类的能力,获取有关类的一切信息(类所在的包、类实现的接口、标注的注解、类的数据域、类的构造器、类的方法等)在运行时,使用反......
  • javaNIO创建tcp服务器时的重要点
    在使用NIO创建非阻塞tcp服务器时,几个容易出现问题的点,如下代码注释所示:packagenet.yury.nio;importjava.io.IOException;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.CharBuffer;importjava.nio.channels.*;importjava.nio.charse......
  • Java的反射机制
    介绍反射机制Java的反射机制允许在程序运行期间,借助反射API获取类的内部信息,并能直接操作对象的内部属性及方法。Java反射机制提供的功能:在运行时,使用反射分析类的能力,获取有关类的一切信息(类所在的包、类实现的接口、标注的注解、类的数据域、类的构造器、类的方法等)在......
  • 23基于java教师科研项目管理系统
    背景及意义目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通过标签分类管理等方......
  • java语言和数据类型
    1、java和跨平台计算机语言和编程相关1.JVM:java虚拟机。2.JRE:java运行环境。包括程序运行所需的虚拟机和类库,一般服务器使用。3.JDK:java开发工具包。java语言是如何跨平台的?java语法规则(重点)类名建议首字母大写。2.一个类要运行必须要有main主方法。3.java语言严......
  • 52班JAVA入门基础课堂代码
    Demo01_数组的概念和定义格式packageday01;publicclassDemo01_数组的概念和定义格式{publicstaticvoidmain(String[]args){//intage=19;//容器大小,同类型的元素,长度----元素的个数////数组---容器的一种,长度固定,......
  • Java8之UnaryOperator总结
    在Java8中,UnaryOperator是一个参数接口,它继承自Function,UnaryOperator接收一个参数,返回和参数同样类型的结果,其实相当于对数据做了加工。@FunctionalInterfacepublicinterfaceUnaryOperator<T>extendsFunction<T,T>{}UnaryOperator作为参数importjava.util.Array......
  • 21基于java的旅游信息管理系统
    项目背景根据旅游行业的这种现状,提出解决问题的一个可行性方法,实现了旅游管理的网络化。项目总体介绍旅游系统设计分为前后网站和后台管理系统,功能点包含旅游景点信息分类展示、景点详情(地理位置、特色景点概述等)、下单预订等功能;角色分为管理员和普通用户。用户可以对旅游......
  • JavaSpring学习的报错查看
    警告:Exceptionencounteredduringcontextinitialization-cancellingrefreshattempt:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'bookService'definedinclasspathresource[applicationContext.xml]:C......