spring框架中Spring Validation的注解校验

devtools/2024/9/23 23:22:47/

在进行业务分析时发现当前业务所有的属性都应当有值,因此在设置数据库中的表结构时,也设置了所有属性都是必填。属性又比较多,如果通过一个个的if判断会显得代码比较多,因此考虑到使用注解进行校验属性是否为空。

常见属性上的校验注解

  1. @NotNull:用于检查字段是否为null。
  2. @NotEmpty:用于检查字符串是否为空(长度为0)。
  3. @NotBlank:用于检查字符串是否为空或只包含空白字符。
  4. @Null:用于检查字段是否为null。
  5. @Size:用于检查字符串、集合或数组的长度是否在指定范围内。
  6. @Min@Max:用于检查数字类型的字段是否在指定的范围内。
  7. @Pattern:用于检查字符串是否匹配正则表达式。

@NotNull和@Min

@NotNull(message = "商品数量不能为空")
@Min(value = 1, message = "商品数量不能小于1")
private Integer cartNum;

@NotEmpty

@NotEmpty(message = "账号不能为空")
@Length(max = 32, message = "账号长度不能超过32个字符")
private String account;

@NotBlank

    @NotBlank(message = "营业执照或机构代码证不能为空")private String license;

@Size

   @NotEmpty(message = "users 至少要有一组数据")@Size(min = 1, message = "users 至少要有一组数据")private List<UserRequest> users;

@Pattern

   @ApiModelProperty(value = "密码", required = true)@Pattern(regexp = "^(?![\\da-z]+$)(?![\\dA-Z]+$)(?![\\d~!@#$%^_]+$)(?![a-zA-Z]+$)(?![a-z~!@#$%^_]+$)(?![A-Z~!@#$%^_]+$)[\\da-zA-z~!@#$%^_]{6,18}$", message = "密码格式错误,密码必须以字母开头,长度在6~18之间,只能包含字符、数字和下划线")private String password;

 @Min@Max

    @ApiModelProperty(value = "请填写服务评分")@Min(value = 0)@Max(value = 5)private Double serviceScore;

注意以上注解需要在控制层的参数前添加@Valid或@Validated注解。用于标记Controller中的方法参数,表示需要对该参数进行校验。

import javax.validation.Valid;@Controller
public class UserController {@PostMapping("/users")public String createUser(@Valid @RequestBody User user, BindingResult bindingResult) {if (bindingResult.hasErrors()) {// 处理校验失败的情况return "error";}// 创建用户return "success";}
}

注解避免了重复的使用if判断,简化了代码编写。


http://www.ppmy.cn/devtools/96060.html

相关文章

Java预约家政上门服务本地服务系统小程序源码

&#x1f31f;【轻松生活&#xff0c;从一键预约家政开始&#xff01;】&#x1f31f; &#x1f3e0; 告别繁琐&#xff0c;拥抱便捷新生活 在这个快节奏的都市生活中&#xff0c;忙碌的你是不是经常为家里的琐事烦恼&#xff1f;打扫、整理、甚至是专业家电维修&#xff0c;…

【屏驱MCU】系列文章合集

屏驱MCU系列文章 【屏显MCU】多媒体接口总结&#xff08;一&#xff09; 【DVP接口】0v5640的DVP接口设计分析&#xff08;硬件&#xff09; 【DVP接口】0v5640的DVP接口设计分析&#xff08;软件&#xff09; 【屏驱MCU】RT-Thread文件系统接口解析 【RT-Thread】串口接收…

视频教程:自研低代码拖拽图形编辑器底层库moveable示例学习

视频地址&#xff1a;自研低代码拖拽图形编辑器底层库moveable示例学习

Elasticsearch 中的复合查询

Elasticsearch 是一种广泛应用的分布式搜索引擎&#xff0c;支持复杂的查询条件以满足不同场景下的搜索需求。其强大的查询 DSL&#xff08;Domain Specific Language&#xff09;允许开发者组合多个查询条件&#xff0c;以实现精准的搜索结果。本文将深入探讨 Elasticsearch 中…

改善工作流

快捷键管理器 打开Editor->Shortcuts查看和编辑Unity中的快捷键 示例 ShiftSpace 窗口最大化 P 选择预制体 进入预制体编辑模式 单一检视窗口 选择组件&#xff0c;选择Properties打开一个窗口&#xff0c;显示组件信息&#xff1b;切换对象&#xff0c;窗口信息不会改变…

08 STM32 DMA

DMA 协助CPU&#xff0c;完成数据转运工作。 两个程序&#xff1a; DMA数据转运&#xff0c;DMAAD多通道 DMA数据转运&#xff0c;将使用DMA&#xff0c;进行存储器到存储器的数据转运&#xff0c;也就是把一个数组里面的数据&#xff0c;复制到另一个数组里。 定义一个数组D…

RabbitMQ与ElasticSearch面试

目录 RabbitMQ 1、你们项目中哪里用到了RabbitMQ 2、为什么会选择使用RabbitMQ 3、使用RabbitMQ如何保证消息不丢失 4、消息的重复消费问题如何解决的 5、如何解决消息堆积在MQ的问题 6、RabbitMQ如何保证消费的顺序性 7、RabbitMQ的延迟队列有了解过嘛 8、RabbitMQ如…

Anything in Any Scene:无缝融入任何场景,实现逼真视频对象插入技术

人工智能咨询培训老师叶梓 转载标明出处 现实世界的视频捕获虽然因其真实性而宝贵&#xff0c;但常常受限于长尾分布的问题&#xff0c;即常见场景过度呈现&#xff0c;而关键的罕见场景却鲜有记录。这导致了所谓的"分布外问题"&#xff0c;在模拟复杂环境光线、几何…