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

Java validation

在Java Web开发中,会在Controller层做参数校验、参数处理,可以使用if条件语句进行校验,也可以使用Java EE规范中提供的注解进行校验。Java EE规范中javax.validation包下会定义一些参数校验规范,然后有hibernate-validator实现具体的校验规则。

一 普通的校验方式

@Data
public class MangoJob {private Integer id;private String name;private String type;private String telephone;private Date date;private Integer number;
}
@RestController
@RequestMapping("/mango/job")
public class MangoJobController {@PostMapping("/saveMangoJob")public ResponseResult<String> saveMangoJob(@RequestBody MangoJob mangoJob) {// 校验参数if (StringUtils.isBlank(mangoJob.getName())) {return ResponseResult.fail("作业名称不能为空");}if (StringUtils.isBlank(mangoJob.getType())) {return ResponseResult.fail("作业类型不能为空");}if (mangoJob.getNumber() < 10) {return ResponseResult.fail("作业数量不能小于10");}// 业务逻辑System.out.println("mangoJob is: " + mangoJob);System.out.println("mangoJob name is: " + mangoJob.getName());return ResponseResult.success("添加数据成功");}}

普通方式校验参数一开始就会占据大篇幅代码,然后再开始写真正的业务逻辑,而且多个接口中都有用到相关参数时,就又要重复上述校验代码,还有不同的接口中对参数使用不同,还不能将校验逻辑单独抽取成一个方法,所以可以使用Java EE规范提供的校验注解简化代码开发。

二 Java注解式校验参数

javax.validation包下定义的常用校验约束注解:

javax.validation.constraints.Null @Null 被注解元素必须为null‌
javax.validation.constraints.NotNull @NotNull 被注解元素不能为null
javax.validation.constraints.NotEmpty @NotEmpty 集合/数组/字符串不能为null,且长度大于0‌
javax.validation.constraints.NotBlank @NotBlank 字符串不能为null,且trim后长度大于0
javax.validation.constraints.AssertTrue @AssertTrue 字段必须为true
javax.validation.constraints.AssertFalse @AssertFalse 字段必须为false
javax.validation.constraints.Min @Min 整数数值必须大于等于指定值
javax.validation.constraints.Max                 @Max 整数数值必须小于等于指定值
javax.validation.constraints.DecimalMin @DecimalMin 数值类型大于(等于)指定值
javax.validation.constraints.DecimalMax @DecimalMax 数值类型小于(等于)指定值
javax.validation.constraints.Size @Size 限制集合/数组/字符串的长度范围‌
javax.validation.constraints.Digits @Digits 限制数值整数和小数部分的位数‌
javax.validation.constraints.Past @Past 日期必须是过去时间
javax.validation.constraints.PastOrPresent @PastOrPresent 日期必须是过去时间包含当前时间
javax.validation.constraints.Future @Future 日期必须是将来时间
javax.validation.constraints.FutureOrPresent @FutureOrPresent 日期必须是将来时间包含当前时间
javax.validation.constraints.Positive @Positive 数值必须为正数
javax.validation.constraints.Negative @Negative 数值必须为负数
javax.validation.constraints.PositiveOrZero @PositiveOrZero 数值必须为正数或0
javax.validation.constraints.NegativeOrZero
http://www.dtcms.com/a/301330.html

相关文章:

  • Java学习第八十部分——Freemarker
  • Linux c网络专栏第三章DPDK
  • Petalinux驱动开发
  • Linux驱动开发笔记(五)——设备树(下)——OF函数
  • 人社部物联网安装调试员的实训平台
  • RabbitMq 常用命令和REST API
  • 9.SpringBoot Web请求参数绑定方法
  • 盛最多水的容器-leetcode
  • 《Java 程序设计》第 7 章 - 继承与多态
  • 记录几个SystemVerilog的语法——时钟块和进程通信
  • maven聚合工程(多个mudule只编译、打包指定module)
  • JVM类加载机制全流程详解
  • 通过硬编码函数地址并转换为函数指针来调用函数
  • Java#包管理器来时的路
  • Leetcode-3427变长子数组求和
  • Mitk教程案例项目编译
  • 嵌入式——单片机的独立按键
  • 【3DsMax+Zbrush+SP】风格化低多边形模型制作教程——以制作杯子为例——03在Substance Painter中制作材质
  • PyTorch深度学习入门记录3
  • 两数之和 II - 输入有序数组-leetcode
  • 【深度学习系列82】joyagent上手体验
  • 五、搭建springCloudAlibaba2021.1版本分布式微服务-gateway网关
  • 基于大模型的预训练、量化、微调等完整流程解析
  • 【思维链(CoT)技术深度解析】从理论到实践的革命性推理方法
  • pytest中的参数化
  • Python-初学openCV——图像预处理(三)
  • 相对路径遍历(CWE-22)
  • 【杂谈】-被引用即被看见:生成式AI如何改写内容规则
  • vscode找不到python解释器的解决方案
  • 8. 若依框架的AjaxResult