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

@NotNull、@NotEmpty 和 @NotBlank 区别

@NotNull、@NotEmpty 和 @NotBlank 是 Java Bean Validation (JSR 380)
规范中定义的注解,通常用于验证对象的属性是否满足特定的条件。这些注解常用于后端验证,确保接收到的数据符合预期。

@NotNull

用途:验证一个对象是否不为null。
注意:它只能验证对象本身是否为null,而不能验证对象内部的内容是否为空。例如,对于一个字符串,@NotNull
只能确保这个字符串对象不是null,但无法确保字符串内容不是空字符串或仅包含空白字符。

@NotEmpty

用途:验证集合(如 List、Set、Map、数组等)是否非空,或者字符串是否非空(即字符串长度大于0)。
注意:对于字符串,@NotEmpty
会检查字符串长度是否大于0,但不会检查字符串是否仅包含空白字符。如果要检查字符串是否不仅非空,而且不包含仅空白字符,应使用
@NotBlank。

@NotBlank

用途:验证字符串是否不仅非空,而且至少包含一个非空白字符。 注意:@NotBlank
仅适用于字符串类型,它会检查字符串是否既非null,也非空字符串,同时至少包含一个非空白字符。 这些注解通常与 Hibernate
Validator 或其他 Bean Validation 实现一起使用,以在运行时自动验证对象的属性。如果验证失败,将抛出
ConstraintViolationException 异常,其中包含有关验证失败的详细信息。

使用这些注解可以提高代码的健壮性,减少因无效或恶意输入而导致的问题。同时,它们也有助于简化后端验证逻辑,使代码更加清晰和易于维护。

相关文章:

  • 【leetcode 详解】生成特殊数字的最少操作【中等】(C++思路精析)
  • C#中实现Web API的签名验证
  • 24种设计模式介绍与6大设计原则(电子版教程)
  • [Javascript】前端面试基础3【每日学习并更新10】
  • 【iOS】——Block循环引用
  • Java面试题基础
  • JAVA(SpringBoot)对接微信登录
  • docker compose build 怎么才能只构建其中一个服务的镜像
  • 基于微信小程序+SpringBoot+Vue的儿童预防接种预约系统(带1w+文档)
  • 夯实数字经济的“新基建”-基于大数据与区块链技术的新型基础设施
  • LangChain4j-RAG基础
  • Linux相关指令
  • Apache DolphinScheduler Worker Task执行原理解析
  • 校车购票小程序的设计
  • Perl脚本学习(一)-- 基础语法
  • 【Leetcode】101. 对称二叉树
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【刷算法】求1+2+3+...+n
  • Android交互
  • HTTP请求重发
  • JavaWeb(学习笔记二)
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Protobuf3语言指南
  • Python 反序列化安全问题(二)
  • TCP拥塞控制
  • 从0到1:PostCSS 插件开发最佳实践
  • 目录与文件属性:编写ls
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • (LLM) 很笨
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (rabbitmq的高级特性)消息可靠性
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)Linux——Linux常用指令
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • ****三次握手和四次挥手
  • .apk 成为历史!
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET : 在VS2008中计算代码度量值
  • .NET连接MongoDB数据库实例教程
  • .py文件应该怎样打开?
  • [000-01-011].第2节:持久层方案的对比
  • [C#] 我的log4net使用手册
  • [C#C++]类CLASS
  • [C++]: std::move
  • [ccc3.0][数字钥匙] UWB配置和使用(二)
  • [CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 视觉模型篇