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

基于 (java) validation-api、hibernate-validator 的数据校验扩展

在Java 开发中,数据校验是保证系统健壮性和数据完整性的重要环节。`validation-api`和`hibernate-validator`功能强大,在这个基础上,做了一些检验简单扩展处理,在处理复杂业务场景时提供一些支持。

项目简介

`brilliant-validation`是一个基于Java validation-api和hibernate-validator的扩展库,通过引入AviatorScript 表达式引擎,实现了多字段关系校验,同时提供了一些单字段校验注解,让数据校验方便。

项目地址

✨ 主要功能

1. 基于Aviator的多字段关系校验


传统校验只能处理单个字段的规则,`brilliant-validation`支持使用AviatorScript表达式进行多字段之间的逻辑关系校验。

2. 单字段校验注解


内置了常用的单字段校验注解,如社会信用代码、身份证号、车牌号等。

📦 快速开始

添加依赖

> **版本说明**:
> - javax版本对应:2025.0.x
> - jakarta版本对应:2025.1.x

根据你的项目选择相应版本:

<dependencyManagement> <dependencies> <dependency> <groupId>top.hjjcgzlafr</groupId> <artifactId>brilliant-validation-bom</artifactId> <version>{version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependency> <groupId>top.hjjcgzlafr</groupId> <artifactId>brilliant-validation-validator</artifactId> </dependency>

🎯 使用指南

一、单字段校验注解
  • @ByteSize:字节长度校验
  • @CreditCode:社会信用代码校验
  • @IdentityCard:身份证号校验
  • @LicensePlate:车牌号校验
  • @Phone:手机号校验
二、多字段关系校验注解
  • @RelationCheck:单条关系校验
  • @RelationChecks:多条关系校验

💡 实战示例

示例测试项目地址

示例1:手机号校验
@Phone(message = "手机号不正确") private String mobile;
示例2:密码一致性校验(单条规则)
@RelationCheck(expr = "password == confirmPassword", message = "两次密码不一致") public class InfoDTO implements Serializable { private String password; private String confirmPassword; }
示例3:复杂业务规则校验(多条规则)
@RelationChecks({ @RelationCheck(expr = "password == confirmPassword", message = "两次密码不一致"), @RelationCheck(expr = "username != nil", message = "username不能为空") }) public class InfoDTO implements Serializable { private String password; private String confirmPassword; private String username; }
http://www.cnnetsun.cn/news/86726.html

相关文章:

  • 免费守护网站安全:精选一年期SSL证书获取攻略
  • 私有化部署AI知识库——Anything-LLM企业级解决方案详解
  • 如何利用PaddlePaddle和清华源快速搭建高性能NLP训练环境
  • NVIDIA TensorRT镜像安装包下载与CUDA安装全攻略
  • kotaemon配置全解析:轻松定制文档问答系统
  • ACE-Step:开源生成式AI音乐模型解析
  • Seed-Coder-8B-Base能否辅助编写Istio AuthorizationPolicy?
  • Langflow本地部署:解决pip安装卡顿问题
  • LobeChat如何应对高并发请求?压力测试结果公布
  • LobeChat能否组织线上讲座?知识传播新形式
  • Qwen3-VL-8B如何实现近实时视频分析?
  • ACE-Step:开源生成式AI音乐大模型详解
  • LobeChat能否写作小说?创意灵感激发神器
  • Java大厂面试实录:面试官与谢飞机的爆笑对战
  • Bootstrap:随机森林的“多样性引擎”与量化利器
  • 块状Bootstrap:让金融时间序列“记忆”不丢失的魔法
  • 利用清华源加速TensorRT相关依赖的npm安装过程
  • 跨界转型AI产品经理:非算法专业出身的成功之道,揭秘大模型时代的新机遇!
  • 小学物理竞赛考试题目要点
  • Qwen3-VL-30B GPU配置与显存优化全指南
  • Excalidraw Webhook事件机制实现外部系统联动
  • 乔家大院漫游记:在晋商老宅里读懂百年风华
  • Langchain-Chatchat源码部署与Ollama集成
  • 全球USB厂商及设备ID完整列表
  • 2001-2020年全球总初级生产力数据(逐小时/0.1°分辨率)
  • 高速公路无人机车流密度监测 构建动态交通新维度 基于YOLOv8的无人机车辆检测算法 边缘计算无人机交通监测设备
  • 山区搜救无人机人员检测算法 技术攻坚与生命救援的融合演进 城市高空无人机人群密度分析 多模态融合无人机识别系统
  • Ubuntu下使用conda安装tensorflow-gpu避坑指南
  • Qwen3-32B如何突破小语种翻译困境
  • Qwen-Image-Edit结合LoRA实现精准图像编辑