首页 > 其他分享 >后端数据校验之Validator的使用方法

后端数据校验之Validator的使用方法

时间:2024-05-27 11:35:09浏览次数:18  
标签:ExcelProperty 校验 private Validator value 为空 NotNull message 方法

https://blog.csdn.net/m0_72167535/article/details/128173326

1.使用场景

2.常用注解

3.非空校验注解 @NotNull、@NotEmpty、@NotBlank的区别和运用

4.使用示例

1.使用场景
方法体在根据参数进行逻辑处理时,尝尝需要对参数进行校验,一些简单的校验可以使用Validator校验方法。

2.常用注解
@Null 限制必须为null
@NotNull 限制必须不能为null
@AssertFalse 限制必须为false
@AssertTrue 限制必须为true
@DecimalMax(value) 限制必须为一个不超过指定大小值的数字
@DecimalMin(value) 限制必须为一个不低于指定大小值的数字
@Digits(integert,fraction) 限制必须为一个小数,且整数部分位数不能超过integer,小数部分位数不能超过fraction
@Futrue 限制必须为一个将来的日期
@Past 限制必须为一个过去的日期
@Max(value) 限制必须为一个不超过指定大小值的数字
@Min(value) 限制必须为一个不低于指定大小值的数字
@Pattern(value) 限制必须符合指定的正则表达式
@Size(max,min) 限制字符长度必须处在max和min的值之间
@NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0,集合大小不为0)
@NotBlank 验证注解的元素值不为空(不为null,且去除首位空格后长度不为0),不同于@NotEmpty,@NotBlank只适用于字符串的校验且在校验时会去除字符串的空格
@Email 验证值是否为邮箱,也可以通过正则表达式和flag指定自定义的email格式
@Length 限制字符串参数长度
@Range 限制数值类型或者字符串在指定范围
@URL 对URL地址进行验证
3.非空校验注解 @NotNull、@NotEmpty、@NotBlank的区别和运用
@NotNull 常用在数据类型为Long,Integer的基础数据类型上,可以配合@Size、@Max、@Min对数值进行大小的控制。

@ApiModelProperty(value = "编号")
@NotNull(message = "编号不能为空")
@JsonFormat(shape = Shape.STRING)
private Long id;

@ApiModelProperty(value = "价格")
@NotNull(message = "价格不能为空")
@Min(value = 100, message = "价格不能低于100")
@Max(value = 5000, message = "价格不能超过5000")
private Integer price;

@ApiModelProperty(value = "数量")
@NotNull(message = "数量不能为空")
@Size(min = 10, max = 50, message = "数量必须不低于10不超过50")
private Integer num;

@NotEmpty

该注解只能应用于char可读序列(可简单理解为String对象),colleaction,map,array上,因为该注解要求的是对象不为null且size>0,所以只有上述对象是拥有size属性的,而Integer,Long等基础对象包装类没有该属性。

常用在集合类和数组类型上,也可以配合@Size进行大小的控制。

@ApiModelProperty(value = "材料保存列表", required = true)
@NotEmpty(message = "存货清单列表不能为空")
@Size(min = 1, message = "至少需要一条数据")
private List<MaterialAcceptanceItemsSaveVo> itemsSaveList;

@NotBlank 只用于String数据类型上,可以和@Len配合使用限制字符长度。

@ApiModelProperty(value = "供应商", required = true)
@NotBlank(message = "供应商不能为空")
@Len(min = 1, max = 500)
private String provider;

@ApiModelProperty(value = "发票号", required = true)
@Len(min = 0, max = 250)
private String invoiceNo;
4.使用示例
引入依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
实体类

package com.example.demo.domain;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ContentFontStyle;
import lombok.Data;

import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;

/**
* @author linaibo
* @version 1.0
* Create by 2022/12/4 14:13
*/
@Data
@ExcelIgnoreUnannotated
public class Teacher {

//id
// @ExcelProperty(value = "id")
@NotNull(message = "id不能为空")
private int id;
//名字
@ContentFontStyle(color = 10,fontHeightInPoints=12)
@ExcelProperty(value = "名字")
@Pattern(regexp = "1|2", message = "只能填写1或者2中的一个")
@NotBlank(message = "名字不能为空")
private String name;
//邮箱
@ExcelProperty(value = "邮箱")
@NotBlank(message = "邮箱不能为空")
@Email(message = "邮箱格式不正确")
private String email;
//年龄
@ExcelProperty(value = "年龄")
@NotNull(message = "年龄不能为空")
@Max(value = 20,message = "必须小于20")
private int age;
//是否结婚
@ExcelProperty(value = "是否结婚")
@AssertTrue(message = "是否结婚必须是是")
private boolean isMarry;
//是否有孩子
@ExcelProperty(value = "是否有孩子")
@AssertFalse(message = "是否结婚必须是否")
private boolean isChilden;
//体重
@ExcelProperty(value = "体重")
@NotNull(message = "体重不能为空")
@DecimalMax(value = "100", message = "体重不能超过100")
private BigDecimal weight;
//身高
@ExcelProperty(value = "身高")
@NotNull(message = "身高不能为空")
@DecimalMin(value = "170", message = "身高不能低于170")
private BigDecimal height;
//出生日期
@ExcelProperty(value = "出生日期")
@NotNull(message = "出生日期不能为空")
@Past(message = "出生日期必须为过去的日期")
private Date date1;
//死亡日期
@ExcelProperty(value = "死亡日期")
@NotNull(message = "死亡日期不能为空")
@Future(message = "死亡日期必须为将来的日期")
private Date date2;


}

标签:ExcelProperty,校验,private,Validator,value,为空,NotNull,message,方法
From: https://www.cnblogs.com/zhoading/p/18215147

相关文章

  • Nodejs 在实战中的校验用户信息(JWT、localStorage、Cookie)
    本文分别站在了客户端(reactjs)与服务端(nodejs)的角度,总结了整个用户校验过程各自的操作。一概念明晰1.1localStorage和Cookie都是存储数据的方式localStorage:储存在客户端(浏览器)本地Cookie:存储在服务端,安全性更高。(是一个HTTP请求标头,由服务器通过 Set-Cookie 设置,......
  • java方法重写的语法要求
    ​ /* *重写要遵循"两同两小一大"原则: *1)两同: * 1.1)方法名相同 * 1.2)参数列表相同 *2)两小: * 2.1)子类方法的返回值类型小于或等于父类的 *   2.1.1)void时,必须相同 *   2.1.2)基本类型时,必须相同 *   2.1.3)引用类型时,小于或......
  • 【强化学习】强化学习基础教程:基本概念、强化学习的定义,要素,方法分类 以及 Rollout、e
    【强化学习】强化学习基础教程:基本概念、强化学习的定义,要素,方法分类以及Rollout、episode回合、transition转移、trajectory轨迹的概念1.基础概念1.1强化学习的定义1.2强化学习的基本要素2.强化学习分类2.1根据agent学习方式分为基于策略的强化学习PolicybasedR......
  • 什么是方法
    目录一、流程控制关键字1.1break1.2continue二、方法设计[重点]2.1方法说明什么是方法?为什么需要方法?2.2无参无返回值2.3有参数无返回值2.4有参数有返回值返回值,就是方法执行后返回的数据2.5方法设计总结2.6方法调用三、递归[熟悉]四.总结一、流程......
  • String常用方法(4)及补充方法
    publicStringreplace(charoldChar,charnewChar)------将旧字符串替换成新的字符串publicString[]split(Stringstr)------根据str作拆分代码详情:publicclassDemo05{publicstaticvoidmain(String[]args){Stringcontent="java是世界上最好的java编程语......
  • Delphi CxGrid/CxDBTreeList等将排序筛选条件改为中文方法
    Delphi CxGrid/CxDBTreeList等将排序筛选条件改为中文方法一、加入cxLocalizer控件二、在FormCreate里加入以下代码procedureTForm1.FormCreate(Sender:TObject);begin cxLocalizer1.LoadFromResource(HInstance); cxLocalizer1.Language:='中文(简体,中国)';......
  • day14--Lambda、方法引用、算法、正则表达式、数据结构
    day14–Lambda、方法引用、算法、正则表达式、数据结构一、Arrays类接下来我们学习的类叫做Arrays,其实Arrays并不是重点,但是我们通过Arrays这个类的学习有助于我们理解下一个知识点Lambda的学习。所以我们这里先学习Arrays,再通过Arrays来学习Lamdba这样学习会更丝滑一些_.......
  • 解决前端性能瓶颈:高效处理大量数据渲染与复杂交互的策略与优化方法
    ✨✨祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心!✨✨ ......
  • 软件工程方法论对我们经软件开发有多大用处?
    1.提供了有效的项目管理和规划框架,可以帮助团队合理分配资源、制定合理的时间表,并跟踪项目进度,从而确保项目按时交付。2.包括一系列的质量保证技术和流程,如代码审查、单元测试、集成测试、系统测试等,可以帮助团队发现和解决问题,确保软件质量。3.强调需求分析和管理的重要性,可以......
  • vue中引入js脚本块或者js文件 js函数 js方法
    一、vue中,使用js函数的方法在vue文件中,如果想要在组件里,通过事件触发,调用到函数,这个函数需要放在特定的位置,如下:<script>exportdefault{methods:{t1(){},t2(){},t3(){}}}</script>例如用户点击,通过click事件触发,调用t1函数,......