maven: 必要jar

<dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>6.0.13.Final</version></dependency>

controller:

使用@Validated 注解对参数进行校验,@Validated后面必须是 BindingResult bindingResult 用于接收校验结果

package com.fostlin.jpa.controller;import com.fostlin.jpa.pojo.UserDO;
import io.swagger.annotations.*;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import javax.validation.Valid;/*** @Auther: linsiteng* @Date: 2020/7/29 15:07* @Description:*/
@Api(tags = "ObjectVerifyTestController",description="Verify 验证参数注解测试类" )
@RestController
@RequestMapping("/verify")
public class ObjectVerifyTestController {@ApiOperation(value = "User校验")@PostMapping("/user")public String verifyUser(@Validated @RequestBody @ApiParam(value="个人详细信息", required=true)UserDO user, BindingResult bindingResult){System.out.println(bindingResult.hasErrors());if(bindingResult.hasErrors()){return bindingResult.getFieldError().getDefaultMessage();}System.out.println(user);return "校验通过";}
}

 实体类:

注解说明

  1. 注解说明

   1.@NotNull:不能为null,但可以为empty(""," ","   ")      2.@NotEmpty:不能为null,而且长度必须大于0 (" ","  ")3.@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0("test")    即:必须有实际字符
复制代码
验证注解 验证的数据类型 说明
@AssertFalse Boolean,boolean 验证注解的元素值是false
@AssertTrue Boolean,boolean 验证注解的元素值是true
@NotNull 任意类型 验证注解的元素值不是null
@Null 任意类型 验证注解的元素值是null
@Min(value=值) BigDecimal,BigInteger, byte,short, int, long,等任何Number或CharSequence(存储的是数字)子类型 验证注解的元素值大于等于@Min指定的value值
@Max(value=值) 和@Min要求一样 验证注解的元素值小于等于@Max指定的value值
@DecimalMin(value=值) 和@Min要求一样 验证注解的元素值大于等于@ DecimalMin指定的value值
@DecimalMax(value=值) 和@Min要求一样 验证注解的元素值小于等于@ DecimalMax指定的value值
@Digits(integer=整数位数, fraction=小数位数) 和@Min要求一样 验证注解的元素值的整数位数和小数位数上限
@Size(min=下限, max=上限) 字符串、Collection、Map、数组等 验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小
@Past java.util.Date,java.util.Calendar;Joda Time类库的日期类型 验证注解的元素值(日期类型)比当前时间早
@Future 与@Past要求一样 验证注解的元素值(日期类型)比当前时间晚
@NotBlank CharSequence子类型 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的首位空格
@Length(min=下限, max=上限) CharSequence子类型 验证注解的元素值长度在min和max区间内
@NotEmpty CharSequence子类型、Collection、Map、数组 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@Range(min=最小值, max=最大值) BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子类型和包装类型 验证注解的元素值在最小值和最大值之间
@Email(regexp=正则表达式,flag=标志的模式) CharSequence子类型(如String) 验证注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式
@Pattern(regexp=正则表达式,flag=标志的模式) String,任何CharSequence的子类型 验证注解的元素值与指定的正则表达式匹配
@Valid 任何非原子类型 指定递归验证关联的对象如用户对象中有个地址对象属性,如果想在验证用户对象时一起验证地址对象的话,在地址对象上加@Valid注解即可级联验证
package com.fostlin.jpa.pojo;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;import javax.validation.Valid;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.util.Date;/*** @Auther: linsiteng* @Date: 2020/7/29 15:12* @Description:*/
@Data
@ApiModel(description= "个人信息")
/*@Setter
@Getter
@ToString*/
public class UserDO implements Serializable {@ApiModelProperty(value = "姓名")@NotBlank(message = "姓名不能为空!")private String name;@NotNull(message = "年龄不能为空")@Min(value = 1,message = "年龄不能小于1")@ApiModelProperty(value = "年龄")private Integer age;@NotNull(message = "性别不能为空")@Size(min=1,max = 1,message = "性别字段超出长度")@ApiModelProperty(value = "性别")private String gender;/** 邮箱*/@ApiModelProperty(value = "邮箱")@NotBlank(message = "联系邮箱不能为空")@Email(message = "邮箱格式不对")private String email;/** 手机号*/@ApiModelProperty(value = "手机号")@NotBlank(message = "手机号不能为空")@Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")private String mobile;@ApiModelProperty(value = "时间")@Past(message = "不能大于当前日期")private Date date;@ApiModelProperty(value = "测试字段")@Validprivate VerifyTest verifyTest;
}

spring validated 参数校验相关推荐

  1. Spring Validated分组校验

    使用Spring Validated时,一直不知道有分组校验,分组校验时都在service层使用if else判断校验,感觉这样写不是太友好,后期知道Spring Validated分组校验后,就写了 ...

  2. Validated参数校验

    这里写自定义目录标题 标签含义 Validated参数校验 全局捕获异常 实体类 错误信息处理类 标签含义 限制 说明 @Null 限制只能为null @NotNull 限制必须不为null @Ass ...

  3. Spring Boot参数校验以及分组校验的使用

    简介:做web开发基本上每个接口都要对参数进行校验,如果参数比较少,还比较容易处理,一但参数比较多了的话代码中就会出现大量的if-else语句.虽然这种方式简单直接,但会大大降低开发效率和代码可读性. ...

  4. Spring Boot参数校验

    1. 概述 作为接口服务提供方,非常有必要在项目中加入参数校验,比如字段非空,字段长度限制,邮箱格式验证等等,数据校验常用到概念: JSR303/JSR-349: JSR303是一项标准,只提供规范不 ...

  5. 参数幂等性校验失败_快速入手 Spring Boot 参数校验

    1.背景介绍 2.Spring Boot文档中的Validation 3.Hibernate Validator 4.Spring Validator 5.示例 6.补充 <Netty 实现原理 ...

  6. spring boot参数校验 告别校验胶水代码

    ​ springboot进行参数校验 文章目录 前言 普通的逻辑代码校验 PathVariable 路径变量校验 JSR规范是什么? springboot-JSR303参数校验 引入参数校验依赖 官网 ...

  7. Spring MVC 参数校验

    Spring 4 以上支持JSR303校验API.所以必须要Spring4. 我用Spring boot,所以引入 <dependency><groupId>org.sprin ...

  8. @valid 校验_一文带你快速入手 Spring Boot 参数校验

    点击上方"Java专栏",选择"置顶或者星标" 第一时间阅读精彩文章! ☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜ 作者:狂乱的贵公子 来源: ...

  9. Springboot @Validated参数校验

    简单使用 Java API规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现.hibernate validation是对这个规范的实现,并增加了校验注解如@Em ...

最新文章

  1. Java项目:在线高中考试系统(java+SSM+Jsp+Mysql+Maven)
  2. String与Date转换
  3. 计算机在超声的应用,计算机在医学超声成像中应用.pdf
  4. JENKINS使用DOCKER运行PYTEST并且出ALLURE报告
  5. 使用SQL命令行更改数据库字段类型
  6. iPhone 13 Pro手机壳曝光 网友:更丑了
  7. opencv-api minAreaRect
  8. 苹果终端date命令_苹果M1 Mac电脑关闭SIP方法
  9. matlab如何获得数组有多少数,请问MATLAB里有得到一个数组中相同数有多少个的函数么?...
  10. v-distpicker
  11. LTE-5G学习笔记17--COMP技术讲解
  12. Vue nvm重装node和npm与vue3报错Emitted ‘error‘ event on ChildProcess instance at errno: -4058
  13. jQuery里面的选择属性和修改属性
  14. python数字转大写字母_python变量名称如何转化为大写字母?
  15. android 录制手机视频与生成gif图片
  16. 云启资本陈昱:开源软件公司市场估值已超平均市值 20 倍
  17. python怎么网络通信_python入门第二十六天--网络通信
  18. 使用ESP8266(基于官方SDK)接入阿里云物联网平台
  19. Python人体肤色检测
  20. Ulead GIF Animator

热门文章

  1. 镜头那么多,到底要哪一个?盘点向「多目怪」挺进的智能手机
  2. x86-64CPU寄存器介绍
  3. 滴滴打车,打车软件app实现。小车在地图上平滑移动的实现,Android,基于高德地图开发实现
  4. Linux新建文件夹、删除文件命令
  5. CorelDRAWX4的VBA插件开发(三十五)调用C++实现一键智能群组(第4节)递归调用框选工具
  6. python 变化检测使用EM算法求解差异图像最优灰度阈值问题实现
  7. cs python课程 加州大学_【北美名校CS课程整理系列】6. 强化学习与决策控制
  8. 用友软件T3出纳通提示单据锁定
  9. 三部门发文,ETC“指标压身”,发卡机构如何用交通大数据守住风控“命门”?
  10. 紫光同创国产FPGA学习之了解器件和软件