hibernate-validator

article/2025/10/6 20:23:19

validator

  • 简介
    • 各种注解
    • 好处
  • validator.validate方法
    • 业务逻辑代码中检查传入的参数时
    • 为传入的参数类型中各个属性添加注解
      • @NotNull、@NotBlank、@NotEmpty间的区别

简介

validator,翻译过来,就是“验证器”的意思。它是一种注解式参数校验,包名为javax.validation.Validator;

所谓注解式参数校验,是指通过给需要校验的(每个自定义类型对象的)对应属性添加注解,来完成指定校验。比如给属性添加注解@NotNull,程序会在在业务逻辑的代码中调用validator.validate(指定类型的对象)时,自动检查带有该注解的属性,检查这些属性是否为空值。这篇博客中有非常详细的说明。

各种注解

给属性添加的注解,如下图所示,很详细,也可以看这篇博客。
在这里插入图片描述

好处

正常情况下(未使用hibernate-validator),如果用户调用你开发的接口时,未按你的要求传入参数,比如遗漏了自定义类型对象的些许属性,程序会直接报错,因为无法构造要传入接口的参数对象,如下图所示。
在这里插入图片描述

而使用了validator.validate进行参数校验的接口,不仅不会报错,程序正常运行,给用户返回200信息,还会提示错误发生的原因和位置,如下图所示。
在这里插入图片描述

validator.validate方法

业务逻辑代码中检查传入的参数时

首先需要在代码中的接口传入参数的位置上,给参数添加@Validated注解;

自认,待进一步确认
注意,需要给每一个添加了validator各种检查注解的类型添加@Validated注解,
比如,在自己自定义类型中,使用了枚举类型的属性,那么就需要在该枚举类型的声明处,添加@Validated注解。如下所示。

public class DeliveryfileEntity {@NotNull(message = "紧急程度不能为空")private urgencydegree urgencydegree;@Validatedenum urgencydegree{UnurgentMail("1"),urgentMail("2");String code;private urgencydegree(String code) {// TODO Auto-generated constructor stubthis.code = code;}}

然后,在需要检验参数的地方,调用validator.validate方法,来通过validator类实现对应注解的检查,如下所示。

public ResponseMessage<?> deliveryPaperfile(@RequestBody @ApiParam(name="投递记录对象") @Validated DeliveryfileEntity deliveryfileEntity) {Set<ConstraintViolation<JeecgDemoEntity>> failures = validator.validate(jeecgDemo);if (!failures.isEmpty()) {return Result.error(JSONArray.toJSONString(BeanValidators.extractPropertyAndMessage(failures)));}

为传入的参数类型中各个属性添加注解

自定义类型DeliveryfileEntity中的各个属性添加指定注解,这样在代码validator.validate时,才会检查这些标有注解的参数,并依据注解检查相应的内容,如下所示。

public class DeliveryfileEntity {//交换码@NotNullprivate String exchangecode;//发文字号@NotNullprivate String issuednumber;//紧急程度@NotNullprivate String urgencydegree;//文件编号@NotNullprivate String filecode;//文件标题@NotNullprivate String filetitle;//文件类别@NotNullprivate String filetype;//箱门编号@NotNullprivate String boxnumber;//取件码@NotNullprivate String pickcode;//操作人姓名@NotNullprivate String operatorName;//操作人所属公司@NotNullprivate String sysCompanyCode;

@NotNull、@NotBlank、@NotEmpty间的区别

@NotNull 被注释的元素不能为null, 用在基本类型上?
@NotBlank 用在String上面?
@NotEmpty 被注释的字符串必须非空,用在集合类上面?
关于判空属性,有博客这样说,待确认。


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

相关文章

validator自定义校验注解及使用

validator自定义校验注解及使用 官方文档&#xff1a;https://docs.jboss.org/hibernate/validator/8.0/reference/en-US/html_single/#validator-customconstraints 用到依赖: <!--validator的依赖如果项目使用的springBoot的依赖可以不用再引入 hibernate-validator 因为…

spring之Validator

初步认识 spring数据验证核心类&#xff1a;①&#xff1a;Validator ②&#xff1a;Errors,两者之间的纽带是Validator中定义的validate方法。 public interface Validator {// 限定Validator的职责&#xff0c;不可能所有的校验全部交给一个Validator来做boolean supports(…

Hibernate-Validator的学习

Hibernate-Validator的学习 此教程基于黑马程序员Java品达通用权限项目&#xff0c;哔哩哔哩链接&#xff1a;https://www.bilibili.com/video/BV1tw411f79E?p49 1.hibernate-validator介绍 早期的网站&#xff0c;用户输入一个邮箱地址&#xff0c;需要将邮箱地址发送到服…

Hibernate Validator源码解析

一、引言 问题&#xff1a;在代码编写的过程中&#xff0c;数据值的校验在JavaEE三层架构&#xff08;展示层、业务层、数据访问层&#xff09;均有涉及&#xff0c;各层的校验需求又是不尽相同的&#xff0c;因此往往会伴随着代码冗余&#xff0c;重复的校验逻辑出现在三层代…

Hibernate Validator简介

亲爱的小伙伴们我来填坑啦&#xff0c;java中优雅的参数校验方法中的校验的实现原理。 1.前言 验证数据是发生在所有应用程序层&#xff08;从表示层到持久层&#xff09;的常见任务。通常在每一层中实现相同的验证逻辑&#xff0c;这既耗时又容易出错。为了避免重复这些验证&…

bootstrapValidator验证最大值最小值范围限制

录入该值的最大值与最小值 bootstrapValidator进行效验&#xff0c;使最小值不可大于最大值&#xff0c;最大值不可小于最小值 刚开始的验证还是没事的&#xff0c;符合正常的验证规则 再把不符合规则的最大值改变&#xff0c;现在最小值已经比最大值小了&#xff0c;但是最大…

class-validator中文教程

官方文档&#xff1a; https://www.npmjs.com/package/class-validator class-validator可以说是一个简化验证的依赖库 &#xff08;采用注释的方式进行校验&#xff09; 但是缺少中文文档和过程&#xff0c;以自己的理解和对官网文档的阅读进行整理输出。 它的好兄弟class-t…

Hibernate Validator 总结大全

背景 代码开发过程中&#xff0c;参数的有效性校验是一项很繁琐的工作&#xff0c; 如果参数简单&#xff0c;就那么几个参数&#xff0c;直接通过ifelse可以搞定&#xff0c;如果参数太多&#xff0c;比如一个大对象有100多个字段作为入参&#xff0c;你如何校验呢&#xff1…

java使用validator进行校验

不管是html页面表单提交的对象数据还是和第三方公司进行接口对接&#xff0c;都需要对接收到的数据进行校验&#xff08;非空、长度、格式等等&#xff09;。如果使用if一个个进行校验&#xff08;字段非常多&#xff09;&#xff0c;这是让人崩溃的过程。幸好jdk或hibernate都…

java validator_Spring中校验器(Validator)的深入讲解

前言 Spring框架的 validator 组件,是个辅助组件,在进行数据的完整性和有效性非常有用,通过定义一个某个验证器,即可在其它需要的地方,使用即可,非常通用。 应用在执行业务逻辑之前,必须通过校验保证接受到的输入数据是合法正确的,但很多时候同样的校验出现了多次,在不…

springboot使用hibernate validator校验

目录 一、参数校验二、hibernate validator校验demo三、hibernate的校验模式 1、普通模式&#xff08;默认是这个模式&#xff09;2、快速失败返回模式四、hibernate的两种校验 1、请求参数校验2、GET参数校验(RequestParam参数校验)3、model校验4、对象级联校验5、分组校验五…

Validator 使用总结

介绍 首先说下大家常用的hibernate-validator&#xff0c;它是对JSR-303/JSR-349标准的实现&#xff0c;然后spring为了给开发者提供便捷集成了hibernate-validator&#xff0c;默认在springmvc模块。 依赖 本文所介绍皆在springboot应用的基础上&#xff0c;首先加上web模块…

浅谈 Android Tombstone(墓碑日志)分析步骤

最近项目产品刚刚出货&#xff0c;客户退机、死机事件频发。日常解决bug中&#xff0c;少不了和墓碑日志打交道&#xff0c;截止今天之前&#xff0c;见到墓碑日志都是一脸懵逼&#xff0c;不知道怎么分析。最近又有了两个日志&#xff0c;硬着头皮看吧。之所以称之为浅谈&…

Android tombstone文件是如何生成的

本节内容我们聚焦到androidQ上&#xff0c;分析android中一个用于debug的功能&#xff0c;那就是tombstone&#xff0c;俗称“墓碑”。现实生活中墓碑一般是给死人准备的&#xff0c;而在android系统中“墓碑”则是给进程准备的。 为何Android要设计出这样一个东西呢&#xff…

【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 获取 tombstone_0X 崩溃日志信息 )

文章目录 一、崩溃信息描述二、手机命令行操作三、电脑命令行操作四、Tombstone 内容 Tombstone 报错信息日志文件被保存在了 /data/tombstones/ 目录下 , 先 ROOT 再说 , 没有 ROOT 权限无法访问该目录中的信息 ; 使用 Pixel 2 手机进行调试 , 其它 ROOT 后的手机也可以使用 …

Android tombstone 分析案例

Android tombstone 分析案例 tombstone文件内容1. 体系结构2. 发生Crash线程3. 原因4. 寄存器状态4.1 处理器工作模式下的寄存器4.2 未分组寄存器r0 – r74.3 分组寄存器r8 – r144.4 程序计数器pc(r15)4.5 程序状态寄存器4.6 ARM参数规则 5. 回溯栈6. 程序栈7. 寄存器地址附近…

RocksDB Tombstone 详解

目录 为什么会有墓碑&#xff1f; 使用场景 原理 描述 分段 查询 优化点 总结 为什么会有墓碑&#xff1f; 我们知道 TP 数据库一般选择 KV 引擎作为存储引擎&#xff0c;数据库的元数据和数据通过一定的编码规则变成 KV 对存储在存储引擎中&#xff0c;比如 CockroachD…

Tombstone 文件分析

Tombstone 文件分析 /* * 下面信息是dropbox负责添加的 **/ isPrevious: true Build: Rock/odin/odin:7.1.1/NMF26F/1500868195:user/dev-keys Hardware: msm8953 Revision: 0 Bootloader: unknown Radio: unknown Kernel: Linux version 3.18.31-perf-g34cb3d1 (smartcmhardc…

android Tombstone 流程

一 总述 下面是一份dump 的log&#xff1a; 810 876 I system_server: libdebuggerd_client: started dumping process 678 740 740 I /system/bin/tombstoned: registered intercept for pid 678 and type kDebuggerdNativeBacktrace 678 678 I libc : Requested du…

android tombstone log分析

今天和大家一起聊聊android 中出现的 Tombstone问题&#xff0c;近期在定制pad 上分析设备概率性重启&#xff0c;导出bugreport日志后&#xff0c;除了看到anr log外&#xff0c;同级目录下还看到了tombstones 并且对比以往日志&#xff0c;发现都生产了大量tombstone...,于是…