javax.validation校验整理

article/2025/9/20 9:12:26

文章目录

  • 前言
    • 一、非空校验
    • 二、长度校验
    • 三、数值校验
    • 四、正则校验
    • 五、自定义校验注解
    • 六、校验组


前言

javax.validation校验总是混淆,特此整理。如有错误,请不吝指正。

一、非空校验

序号注解解释适用场景
1@NotNull不能为null,但可以为empty,没有Size的约束被注解的元素不能为null。接受任何类型
2@NotEmpty不能为null,且Size>0被注解的String、Collection、Map、数组是不能为null或长度为0
3@NotBlank(message =)只用于String,不能为null且trim()之后size>0纯空格的String也是不符合规则的,此注解只能用于验证String类型

小结:

String字段用@NotBlank

非String字段(常见Integer、Double、Decimal等)用 @NotNull 或者 @NotEmpty ,主要看对长度是否要大于0的要求,建议使用 @NotNull

二、长度校验

序号注解解释适用场景
1@Size(max=, min=)被注释的字符串的大小必须在指定的范围内Integer不可用,用于字符串、Collection、Map、数组等
2@Length(min=,max=)被注释的字符串的大小必须在指定的范围内Integer不可用,用于字符串

小结:

对于字符串两个注解效果相同,一个汉字算一个长度,唯一的区别就是来源不通(where R U from ?)

三、数值校验

序号注解解释适用场景
1@Min(value)、@Max(value)被注释的元素必须是一个数字,其值必须大于等于/小于等于指定的最小值
2@DecimalMin(value) 、@DecimalMax(value)接受BigDecimal的字符串表示形式
(如果您处理的数字超过Long.MIN_VALUE或Long.MAX_VALUE以下,则这是唯一可能的选择。)
BigDecimal类型
3@Range(min=,max=,message=)注释的元素必须在合适的范围内BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子类型和包装类型(这里无论什么类型,限定的都是字段值的区间,不是字段长度的区间)
4@Digits (integer, fraction)限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fractiondouble类型

小结:

@Min(value)、@Max(value) 满足大部分需求,特别的需求考虑其他的注解

四、正则校验

序号注解解释适用场景
1@Pattern(regex=,flag=)被注释的元素必须符合指定的正则表达式(手机号,身份证号)按需适配
2@Email被注释的元素必须是电子邮箱地址邮箱地址
3@CreditCardNumber被注释的字符串必须通过Luhn校验算法,银行卡,信用卡等号码一般都用Luhn计算合法性银行卡,信用卡
4@URL(protocol=,host=,port=,regexp=,flags=)被注释的字符串必须是一个有效的urlurl

小结:

  • @Pattern 理论可以校验任何规则的数据字段,但是对于已有的校验,尽量使用原生注解
  • 常用正则表达式
    • 身份证号码:String regex = "[1-9]\\d{13,16}[a-zA-Z0-9]{1}";
    • 手机号码(支持国际格式,+86135xxxx…(中国内地),+00852137xxxx…(中国香港)):String regex = "(\\+\\d+)?1[34578]\\d{9}$";
    • 固定电话号码:String regex = "(\\+\\d+)?(\\d{3,4}\\-?)?\\d{7,8}$";
    • 整数(正整数和负整数):String regex = "\\-?[1-9]\\d+";
    • 中文: String regex = "^[\u4E00-\u9FA5]+$";
    • URL地址:String regex = "(https?://(w{3}\\.)?)?\\w+\\.\\w+(\\.[a-zA-Z]+)*(:\\d{1,5})?(/\\w*)*(\\??(.+=.*)?(&.+=.*)?)?";
    • 中国邮政编码:String regex = "[1-9]\\d{5}";
    • IP地址:String regex = "[1-9](\\d{1,2})?\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))";

五、自定义校验注解

import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.ReportAsSingleViolation;
import javax.validation.constraints.Null;
import javax.validation.constraints.Pattern;import org.hibernate.validator.constraints.CompositionType;
import org.hibernate.validator.constraints.ConstraintComposition;
import org.hibernate.validator.constraints.Length;/*** 验证手机号,空和正确的手机号都能验证通过* 正确的手机号由11位数字组成,第一位为1* 第二位为 3、4、5、7、8* */
@ConstraintComposition(CompositionType.OR)
@Pattern(regexp = "1[3|4|5|7|8][0-9]\\d{8}")
@Null
@Length(min = 0, max = 0)
@Documented
@Constraint(validatedBy = {})
@Target({ METHOD, FIELD, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@ReportAsSingleViolation
public @interface Phone {String message() default "手机号校验错误";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};
}
//添加手机号校验注解
@Phone
private String phone;

六、校验组

没空研究。


注:controller 请求需要加入@Valid注解 校验注解才生效

在这里插入图片描述


http://chatgpt.dhexx.cn/article/xsQxPrIl.shtml

相关文章

Java API学习(二)javax包

在线中文api&#xff1a;http://tool.oschina.net/apidocs/apidoc?apijdk-zh Java版本&#xff1a;1.8 Android版本&#xff1a;23 java的api有java和javax2个包 java和javax都是Java的API包&#xff0c;java是核心包&#xff0c;javax的x是extension的意思&#xff0c;也就…

知识图谱和图神经网络

知识图谱 理论知识知识图谱嵌入模型TransEDistMult 知识图谱的抽取与构建知识图谱工程知识抽取——实体识别与分类知识抽取——实体关系抽取与属性补全 知识图谱的推理常见知识图谱推理方法分类 图表示学习随机游走同构图算法异构图算法 图神经网络系列监督学习或半监督学习模型…

图神经网络和常见的神经网络的区别

GNN-Graph Neural Networks 0 前言1 图神经网络和以往深度学习的区别2 图神经网络的特点 参考知乎&#xff1a;https://zhuanlan.zhihu.com/p/136521625 0 前言 图神经网络有很多比较好的综述&#xff1a; 1、Graph Neural Networks: A Review of Methods and Applications.…

图神经网络(Graph Neural Networks)

图神经网络&#xff08;Graph Neural Network&#xff09;在社交网络、推荐系统、知识图谱上的效果初见端倪&#xff0c;成为近2年大热的一个研究热点。然而&#xff0c;什么是图神经网络&#xff1f;图和神经网络为什么要关联&#xff1f;怎么关联&#xff1f; 本文简单介绍GN…

图神经网络综述

文章目录 1 简介 1.1 GNN简史1.2 GNN的相关研究1.3 GNN vs 网络嵌入1.4 文章的创新性2 基本的图概念的定义3 GNN分类和框架 3.1 GNNs分类3.2 框架4 图卷积网络 4.1 基于图谱的GCN 4.1.1 图信号处理4.1.2 基于谱的GCN方法4.1.3 总结4.2 基于空间的GCN 4.2.1 基于循环的空间GCNs…

什么是图神经网络 (GNN)?

图表无处不在。您的社交网络是人和关系的图表。你的家人也一样。您从 A 点到 B 点所走的道路构成了一个图形。将这个网页连接到其他网页的链接形成了一个图表。当您的雇主向您付款时&#xff0c;您的付款会通过金融机构的图表。 基本上&#xff0c;由链接实体组成的任何东西都…

图神经网络,这到底是个什么?

摘要&#xff1a;图神经网络是一种基于图结构的深度学习方法。 1、什么是图神经网络 图神经网络&#xff08;Graph Neu做ral Networks, GNNs&#xff09;是一种基于图结构的深度学习方法&#xff0c;从其定义中可以看出图神经网络主要由两部分组成&#xff0c;即“图”和“神经…

图学习笔记(三):图神经网络

图学习笔记&#xff08;三&#xff09;&#xff1a;图与图学习 回顾六. 图神经网络&#xff08;Graph Neural Networks&#xff09;一、 什么是图神经网络二、 有哪些图神经网络符号定义1. 图卷积网络&#xff08;Graph Convolution Networks&#xff0c;GCNs&#xff09;GCN方…

图神经网络(一):综述

文章目录 1.背景介绍1&#xff09;图简介2&#xff09;图神经网络简介 2.GNN 的通用设计流程1) 查找图结构2&#xff09;明确图类型和规模3&#xff09;设计损失函数4&#xff09;构造模型 3.计算模块的实例化3.1 传播模块——卷积算子&#xff08;convolution operator&#x…

图神经网络(Graph neural networks)综述

论文链接&#xff1a;Graph Neural Networks: A Review of Methods and Applications Abstract&#xff1a;图&#xff08;Graph&#xff09;数据包含着十分丰富的关系型信息。从文本、图像这些非结构化数据中进行推理学习&#xff0c;例如句子的依赖树、图像的场景图等&#…

什么是图神经网络?

什么是图神经网络&#xff1f; 更多精彩内容: https://www.nvidia.cn/gtc-global/?ncidref-dev-876561 GNN 将深度学习的预测能力应用于丰富的数据结构&#xff0c;这些数据结构将对象及其关系描述为图中由线连接的点。 当两种技术融合时&#xff0c;它们可以创造出新奇而美…

图神经网络(GNN)简述

目录 一、什么是图(graph) 二、如何将图片(images)表示成图(graph) 三、在机器学习中使用图(graph)的挑战 四、图神经网络(Graph Neural Network, GNN) (I). The simplest GNN (II). 如何做预测 (III).如何将图的结构信息引入GNN (IV).Learning edge representations (V). 为什…

什么是图神经网络

2019年可以说是图神经网络元年。 01 什么是图神经网络&#xff1f; 1. 图和属性图 要了解图神经网络&#xff0c;首先要了解图。图是由节点和边组成的&#xff0c;如下图所示。一般图中的节点表示实体对象&#xff08;比如一个用户、一件商品、一辆车、一张银行卡等都可以作…

图神经网络初探

介绍 随着图神经网络&#xff08;Graph Neural Networks&#xff0c;GNN&#xff09;热潮的出现&#xff0c;了解、掌握图神经网络相关原理以及应用相关技术越来越成来从事人工智能人员的必要条件。本文主要概述图神经网络的概念、相关模型、经典应用&#xff0c;经过本文的学习…

图神经网络的介绍

近年来&#xff0c;深度学习领域关于图神经网络&#xff08;Graph Neural Networks&#xff0c;GNN&#xff09;的研究热情日益高涨&#xff0c;图神经网络已经成为各大深度学习顶会的研究热点。GNN处理非结构化数据时的出色能力使其在网络数据分析、推荐系统、物理建模、自然语…

机器学习笔记 - 什么是图神经网络?

一、图神经网络GNN概述 机器学习的力量正在被用来解决一系列不同领域中日益复杂的问题。模型需要识别和理解更抽象的概念和对象,并且在许多情况下做出非线性决策。尽管它们本身很强大,但更传统的机器学习模型类型缺乏准确映射和处理一些最复杂问题的能力。 人工神经网络越来越…

【图神经网络实战】深入浅出地学习图神经网络GNN(下)

文章目录 一、Graph Attention Network1.1 图注意力机制作用与方法1.2 Attention计算1.3 Graph Attention 做了什么 二、序列图神经网络TGCN2.1 序列图神经网络TGCN的应用2.2 序列图神经网络细节&#xff08;实例&#xff1a;交通流量预测&#xff09;2.2.1 交通场景示意图2.2.…

【图神经网络实战】深入浅出地学习图神经网络GNN(上)

文章目录 一、图神经网络应用领域1.1 芯片设计1.2 场景分析与问题推理1.3 推荐系统1.4 欺诈检测与风控相关1.5 知识图谱1.6 道路交通的流量预测1.7 自动驾驶&#xff08;无人机等场景&#xff09;1.8 化学&#xff0c;医疗等场景1.9 物理模型相关 二、图神经网络基本知识2.1 图…

pytorch开发工具

学习目标&#xff1a; 1、pycharm 安装 2、jupter安装 学习内容&#xff1a; 1、pycharm 安装 官网地址&#xff1a; https://www.jetbrains.com/pycharm/download/#sectionwindows 点击安装 选择环境变量&#xff1a; 验证&#xff1a; 2、jupyter安装 进入pytorch 环…

PyTorch 简介

PyTorch 简介 概述PyTorch 是什么Why? PyTorch安装 概述 PyTorch API 文档 PyTorch 是什么 PyTorch 是一个提供两个高级功能的 python 包: 具有强 GPU 加速度的张量计算 (如 numpy)深层神经网络建立在基于磁带的自动调整系统上 注: PyTorch 中的 Torch 和 TensorFlow 中的…