Java开发中的常用字段校验注解
在 Java 开发中,数据校验是确保应用程序的数据完整性和一致性的重要步骤。Java 提供了一系列注解来简化数据校验的过程,以下是一些常用的字段校验注解及其示例代码:
- @NotNull
@NotNull 用于确保字段不为 null,适用于任何类型的字段,包括基本数据类型和对象引用。
import javax.validation.constraints.NotNull;public class Example {@NotNull(message = "字段不能为空")private String name;// Getters and setters
}
- @NotBlank
@NotBlank 用于确保字符串字段不为空且长度大于 0,仅适用于字符串类型的字段。
import javax.validation.constraints.NotBlank;public class Example {@NotBlank(message = "姓名不能为空或者空字符串")private String name;// Getters and setters
}
- @NotEmpty
@NotEmpty 用于确保集合、数组、Map 或者字符串类型的字段不为空。
import javax.validation.constraints.NotEmpty;
import java.util.List;public class Example {@NotEmpty(message = "列表不能为空且至少包含一个元素")private List<String> items;// Getters and setters
}
- @Min 和 @Max
@Min 和 @Max 用于确保数字字段的值在指定的范围内。
import javax.validation.constraints.Min;
import javax.validation.constraints.Max;public class Example {@Min(value = 18, message = "年龄不能小于18岁")@Max(value = 100, message = "年龄不能大于100岁")private int age;// Getters and setters
}
- @Size
@Size 用于确保集合、数组或者字符串字段的大小在指定范围内。
复制代码
import javax.validation.constraints.Size;
import java.util.List;public class Example {@Size(min = 2, max = 50, message = "用户名长度必须在2到50之间")private String username;@Size(min = 1, max = 10, message = "列表大小必须在1到10之间")private List<String> items;@Size(min = 1, max = 100, message = "数组长度必须在1到100之间")private String[] array;// Getters and setters
}
- @Pattern
@Pattern 使用正则表达式验证字符串字段的格式。
import javax.validation.constraints.Pattern;public class Example {@Pattern(regexp = "[a-zA-Z0-9]+", message = "用户名只能包含字母和数字")private String username;// Getters and setters
}
- @Valid
@Valid 用于嵌套验证,对一个对象的属性进行验证。
复制代码
import javax.validation.Valid;public class Outer {@Validprivate Inner inner;// Getters and setters
}public class Inner {@NotBlank(message = "姓名不能为空")private String name;// Getters and setters
}
- 控制器(Controller)中启用字段校验
在 Spring Boot 中,可以通过在控制器类或方法上添加 @Validated 注解来启用验证,并使用 @Valid 注解对请求对象进行验证。
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid;@RestController
@Validated // 注解表示启用验证
public class MyController {@PostMapping("/example")public String example(@RequestBody @Valid MyRequest request) {// 处理请求return "Success";}
}
- 处理参数异常
在 Spring Boot 中,可以通过使用 @RestControllerAdvice 和 @ExceptionHandler 注解来捕获验证错误并处理它们。
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import java.util.HashMap;
import java.util.Map;@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(MethodArgumentNotValidException.class)public Map<String, String> handleValidationExceptions(MethodArgumentNotValidException ex) {BindingResult result = ex.getBindingResult();Map<String, String> errors = new HashMap<>();for (FieldError error : result.getFieldErrors()) {errors.put(error.getField(), error.getDefaultMessage());}return errors;}
}
通过使用这些注解,可以有效地简化 Java 开发中的数据校验工作,确保应用程序的数据完整性和一致性。希望这些示例代码能帮助你更好地理解它们的用法和作用。
相关文章:
Java开发中的常用字段校验注解
在 Java 开发中,数据校验是确保应用程序的数据完整性和一致性的重要步骤。Java 提供了一系列注解来简化数据校验的过程,以下是一些常用的字段校验注解及其示例代码: NotNull NotNull 用于确保字段不为 null,适用于任何类型的字段…...
面试经验分享 | 24年6月某安全厂商HW面试经验
所面试的公司:某安全厂商 所在城市:安徽省 面试职位:蓝初 面试过程: 腾讯会议(语音) 面试过程:整体流程就是自我介绍加上一些问题问题balabalabala。。。由于面的是蓝队所以渗透部分不会太多…...
JSON学习
一、JSON 1.1 简介 JSON:JavaScript Object Notation是一种表示对象的方式 基于JavaScript语言的轻量级的数据交换格式;(即:用来传输数据的一种格式) 现在传输数据的方式更多是采用json的格式,渐渐代替了XML 1.2 JSON的数据表示 …...
LabVIEW在中国航天中的应用
LabVIEW是一种系统设计平台及开发环境,由美国国家仪器公司(NI)开发。它在中国航天领域的应用非常广泛,涵盖了测试与测量、数据采集、控制系统设计等多个方面。以下是LabVIEW在中国航天中的几个主要应用实例: 1. 测试…...
编程思维的培养
培养编程思维是成为一名优秀程序员的重要步骤。编程思维不仅仅是写代码的能力,还包括解决问题的思维方式、对复杂系统的理解、代码优化的意识、团队合作的能力等。以下是一些培养编程思维的方法和建议。 1. 学习基础知识 1.1 掌握编程语言 从一门编程语言开始&am…...
Docker笔记-Debian容器内搭建ssh服务
登陆容器之后修改密码: passwd 密码设置完成后安装openssh-server apt-get install openssh-server 修改端口号为50022并添加配置 vim /etc/ssh/sshd_config 修改成 Port 50022 PasswordAuthentication yes PermitRootLogin yes 启动 rootlinux:~# /etc/in…...
爬虫的法律风险是什么?以及合法使用爬虫技术的建议。
爬虫的法律风险是什么? 网络爬虫技术,虽然在数据获取方面具有巨大优势,但其使用过程中可能引发的法律风险也不容忽视。这些风险主要包括违反数据保护法规、侵犯知识产权、构成不正当竞争等。下面将详细探讨网络爬虫的法律风险,并在…...
微信小程序允许相机访问相册
// 允许从相机和相册扫码 // uni.scanCode({ // success: function(res) { // console.log(条码类型: res.scanType); // console.log(条码内容: res.result); …...
AMEYA360 | 江苏润石最新发布12颗车规级模拟芯片
日前江苏润石再度新增12颗通过AEC-Q100 Grade1,满足MSL 1湿敏等级认证的车规级芯片。截止目前,润石科技总计有70颗Grade1 & MSL1的车规级芯片通过认证并进入量产。凭借卓越的产品技术指标和稳定的品质性能不仅展示了公司在车规级模拟芯片领域的技术积…...
PHP表单设计:确保必需字段完整性的最佳实践
在开发网页应用程序时,设计一个具有必需字段的PHP表单是至关重要的。必需字段是用户提交表单时必须填写的信息,它们对于确保数据完整性和准确性至关重要。本文将从多个方面讨论如何在PHP表单中设计必需字段,并探讨确保表单数据完整性的最佳实…...
CentOS 7 安装部署Cassandra4.1.5
一、Cassandra的介绍 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后࿰…...
【数据结构与算法】对称矩阵,三角矩阵 详解
给出对称矩阵、三角矩阵的节省内存的存贮结构并写出相应的输入、输出算法。 对称矩阵和三角矩阵可以通过特殊的存储结构来节省内存。这种存储结构只存储矩阵的一部分元素,而不是全部元素。 对称矩阵:对于一个n阶对称矩阵,我们只需要存储主对…...
Apache IoTDB 走进东南大学,深入分享项目发展历程与收获
源于高校,回到高校,Apache IoTDB PMC 成员乔嘉林为同学们详细分享行业前瞻、研发历程与心得体会。 01 把领先的数据库知识带到校园 6 月 5 日,东南大学计算机科学与工程学院、软件学院、人工智能学院主办的“拔尖领航系列活动特别策划篇-第二…...
Stable Diffusion AI绘画助力建筑设计艺术创新——城市建筑设计大模型分享
大家好,我是向阳 今天我将针对建筑设计方面的AI大模型进行简单介绍,我们将通过富有想象力的关键词或结合Stable Diffusion 的ControlNet 给原本只有黑白线条的线稿变成彩色的效果图,可能你只需要短短几分钟就可以让黑白线稿变成几种甚至十几种…...
没有 ADetailer,ComfyUI 画图脸崩了怎么办?
我们都知道 SD 的 WebUI 中的面部修复神器是 ADetailer,不过它是 WebUI 的专属插件,在 ComfyUI 中是搜索不到这个插件的,但是并不代表 ComfyUI 就不能使用面部修复功能了,ComfyUI 中也是可以找到平替的。 今天我们就来讲讲在 Com…...
防爆气象仪的工作原理
TH-WFB5矿山气象传感器在矿山安全监测系统中扮演着至关重要的角色,它们能够及时发现异常情况,为矿山的安全运营提供可靠的数据支持。矿山气象传感器能够实时监测矿山环境中的风速、风向、温度、湿度和大气压力等关键气象参数。这些传感器采用先进的传感技…...
深度学习入门5——为什么神经网络可以学习?
在理解神经网络的可学习性之前,需要先从数学中的导数、数值微分、偏导数、梯度等概念入手,从而理解为什么神经网络具备学习能力。 1.数值微分的定义 先从导数出发理解什么是梯度。某一点的导数直观理解就是在该点的切线的斜率。在数学中导数表示某个瞬…...
Integer溢出问题
0. 背景 在刷 LeetCode 时,代码的执行结果与预期出现了偏差,原因是 Int 值超过了允许范围 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1 ] [−231,231−1]。工作中从来没有遇到过这种情况,之前的认知是如果 Int 中存储的值超过了允许范围也许…...
软件测试全面指南:提升软件质量的系统流程
一、引言 随着软件行业的飞速发展,确保软件质量、稳定性和用户体验已成为企业竞争的关键。本文档旨在为测试团队提供一套全面的软件测试指南,通过规范测试用例管理、功能测试、接口测试、性能测试及缺陷管理等流程,助力测试团队实现高效、系统…...
《逆贫大叔》:一部穿越时光的温情史诗
《逆贫大叔》:一部穿越时光的温情史诗 在历史的长河中,有些故事能够穿越时光的尘埃,直击人心。《逆贫大叔》就是这样一部作品,它不仅是一部电视剧,更是一段历史的缩影,一次心灵的触动。 背景设定࿱…...
别再只盯着IoU了!用Python手把手教你计算语义分割的95% Hausdorff距离(附完整代码)
超越IoU:用Python实战95% Hausdorff距离的医学影像分割评估 当我们在医院看到CT扫描图像上肿瘤边缘被红色轮廓线精准勾勒时,很少有人会思考这背后的算法是如何评估自己分割结果的准确性的。传统指标如IoU(交并比)和Dice系数固然流…...
运维提效实战:用 Ansible+Cron 搞定日志自动清理,再也不用半夜爬起来删日志了
前言 作为常年和服务器打交道的运维人,估计没人没经历过半夜被磁盘爆满告警吵醒的崩溃 —— 远程登服务器、挨个找日志文件、手动删旧日志,一套操作下来人彻底清醒,回头还得担心误删关键文件。 其实这类重复又机械的运维活儿,完全…...
导师推荐!盘点2026年顶流之选的AI论文写作工具
一天写完毕业论文在2026年已不再是天方夜谭。2026年AI论文写作工具全面升级,实测提速超300%,覆盖选题构思、文献综述、数据整理、格式排版等核心场景,高效搞定论文不再是梦想。 一、全流程王者:一站式搞定论文全链路(一…...
电池基本概念
1、SOC和SOH:指标核心定义物理意义取值范围关键作用SOCState of Charge(荷电状态),表示电池当前剩余容量占其实际可用容量的百分比电池 “当前电量”(类似手机电量)0%~100%指导充放电控制(如电动…...
魔兽世界游戏插件开发从入门到实战:工具详解与效率提升指南
魔兽世界游戏插件开发从入门到实战:工具详解与效率提升指南 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 作为魔兽世界玩家,你是否曾想过通过自定义插件提…...
【经验贴】运营岗考过CDA数据分析师一级经验分享
终于把CDA一级拿下了!查成绩那一刻真的挺开心的,不是多难,但全程自己一点点学出来,特别有成就感。今天就把我整个备考过程老老实实写出来,给正在准备的小伙伴一个参考。一、备考原因我最开始考CDA,完全是因…...
3步搞定ViGEmBus:Windows虚拟游戏手柄驱动终极指南 [特殊字符]
3步搞定ViGEmBus:Windows虚拟游戏手柄驱动终极指南 🎮 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 想要在Windows上体验更丰富的游…...
Unity游戏翻译神器XUnity.AutoTranslator全攻略:从入门到精通
Unity游戏翻译神器XUnity.AutoTranslator全攻略:从入门到精通 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 问题导入:当游戏语言成为体验障碍 你是否曾遇到这样的困境ÿ…...
ComfyUI Inpaint实战:5分钟搞定照片路人甲,AI修图从此不求人
ComfyUI Inpaint实战:5分钟搞定照片路人甲,AI修图从此不求人 每次旅行拍照总有几个"不速之客"闯入镜头?社交媒体晒图前总为背景里的路人发愁?别担心,今天我要分享的ComfyUI Inpaint技术,能让这些…...
PX4飞控开发实战指南:从环境搭建到自主飞行
PX4飞控开发实战指南:从环境搭建到自主飞行 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 一、认知铺垫:无人机大脑如何工作? 你是否好奇无人机如何在空中保持…...
