概述

在开发RESTFull API 和普通的表单提交都需要对用户提交的数据进行校验,例如:用户姓名不能为空,年龄必须大于0 等等。这里我们主要说的是后台的校验,在 SpringBoot 中我们可以通过使用 Hibernate Validator 来进行后台的数据校验的。

闲话少说!接下来就开始介绍如何使用 Hibernate Validator 来进行数据的校验。

Hibernate Validator 实战操作

我们在添加用户的功能基础上来进行改造。

用户Model类代码如下:

public class User {
private String name;
private Integer age;
//省略get and set 方法
}

用户Controller代码如下:

   @RequestMapping(value = "",method = RequestMethod.POST)
public void add(User user){
log.info("添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
}

第一步我们先在 User 类上添加校验的注解,具体代码如下:

public class User {
@NotEmpty(message="请输入您的名称!")
private String name;
@Max(value = 100, message = "年龄必须在20-100之间!")
@Min(value= 20 ,message= "年龄必须在20-100之间!" )
private Integer age;
..省略get 和set 方法
}

我们来大致说明一下 注解的含义:

  • 注解中message : 如果字段信息和检验规则不符合提示的错误信息。
  • 注解中的value: 表示字段信息限定的值。
  • @NotEmpty : 表示name 变量不能为空。
  • @Max: 表示年龄的最大值是多少。
  • @Min: 表示年龄的最小值是多少。

第二步就是对用户添加方法进行改造

用户添加方法中的 User 参数需要声明 @Valid 注解,添加该注解主要是指定要校验的参数实例,然后在添加用户方法中添加 BindingResult 参数。

BindingResult:主要是存储校验结果的数据,我们可以通过 BindingResult 来判断校验是否通过和获取校验错误提示信息。

具体代码如下:

  @PostMapping()
public User add(@Valid User user,BindingResult bindingResult){
if(bindingResult.hasErrors()) {
String defaultMessage = bindingResult.getFieldError().getDefaultMessage();
System.out.println(defaultMessage);
return null;
}
log.info("springboot添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
return user;
}

测试:

这里测试使用的是谷歌的一个插件工具:Advanced REST client 来完成的,你也可以选择你顺手的工具进行测试。

测试用户名称为空的情况:



后台日志输出如下:



测试年龄不在20到100 的数据 :



后台日志输出如下:

Hibernate Validator详细介绍

Hibernate Validator 是 实现JSR349的校验框架,他默认提供已经定义好的校验注解,我们经常使用的大致如下:

  • @NotNull: 校验字段是否为空
  • @NotEmpty: 校验数组集合map是否为空并且元素大于0
  • @Max(value=): 限定指端的最大值
  • @Min(value=): 限定字段的最小值
  • @Size(min=, max=): 校验集合map元素数量的范围
  • @Range(min=, max=): 校验数组String或者数据区间范围
  • @Email: 校验字段是否是邮箱
  • @Past: 校验是否是一个过期的日期
  • @NotBlank: 校验字符串是否非空 即 !=null&& equals("")
  • @Valid: 声明要校验数据的类参数

SpringBoot 2 快速整合 | Hibernate Validator 数据校验的更多相关文章

  1. SpringMVC--使用hibernate validator数据校验

    JSR 303 Spring3开始支持JSR 303 验证框架,JSR303是Java为Bean数据合法性校验所提供的标准框架.JSR 303 支持XML和注解风格的验证,通过在Bean属性上标注类似 ...

  2. Hibernate Validator数据校验框架常用注释

    使用前先配置maven,加入依赖: <dependency> <groupId>org.hibernate</groupId> <artifactId> ...

  3. Spring Boot 整合Hibernate Validator

    Spring Boot 整合Hibernate Validator 依赖 <dependencies> <dependency> <groupId>org.spri ...

  4. 使用Springboot + Gradle快速整合Mybatis-Plus

    使用Springboot + Gradle快速整合Mybatis-Plus 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] MyBatis-Plus(简称 MP)是一个 MyBatis ...

  5. SpringBoot整合Hibernate Validator实现参数验证功能

    在前后端分离的开发模式中,后端对前端传入的参数的校验成了必不可少的一个环节.但是在多参数的情况下,在controller层加上参数验证,会显得特别臃肿,并且会有许多的重复代码.这里可以引用Hibern ...

  6. [SpringBoot] - 配置文件的多种形式及JSR303数据校验

    Springboot配置文件: application.yml   application.properties(自带) yml的格式写起来稍微舒服一点 在application.properties ...

  7. Hibernate Validator参数校验

    日常开发中经常会遇到需要参数校验的情况,比如某个字段不能为空.长度不能超过5等都属于参数校验的范围.对于简单的参数校验通过写几个if-else判断语句就搞定,但是对于复杂的多个参数校验的情况,就不是那 ...

  8. hibernate validator自定义校验注解以及基于服务(服务组)的校验

    hibernate validator是Bean Validation 1.1 (JSR 349) Reference Implementation,其广泛的应用在mvc的参数校验中,尤其是使用服务端 ...

  9. maven validator数据校验

    1.maven文件中添加依赖包 <!-- validator校验--> <dependency> <groupId>org.hibernate</groupI ...

随机推荐

  1. 「求助」关于MacOS 适配不了SOIL的问题 以及我自己愚蠢的解决办法

    我的环境 macOS High Sierra 10.13.6 (2018) 我的SOIL源是通过 终端 git clone https://github.com/DeVaukz/SOIL 直接从gay ...

  2. 精通Android4.0开发视频【张泽华】-完整版下载

    观看须知: 本视频教程为黑马程序员 张泽华老师历经2年时间整理 适合有JavaWeb基础同学学习,教程采用的AVI方式发布,所以看起来很流畅. 视频概括: 1. 本套视频不同于市面上任何一套andro ...

  3. 浅谈IDEA集成SSM框架(SpringMVC+Spring+MyBatis)

    前言 学习完MyBatis,Spring,SpringMVC之后,我们需要做的就是将这三者联系起来,Spring实现业务对象管理,Spring MVC负责请求的转发和视图管理, MyBatis作为数据 ...

  4. 常用linux的命令

    常用但是容易忘记的命令 查看java项目的进程 ps -ef | grep java jps 根据进程查询端口 lsof -i | grep pid netstat -nap | grep pid p ...

  5. 5 X 5 方阵引出的寻路算法 之 路径遍历(完结)

      此篇文章源自对一个有趣问题的思考,在我的另一篇博文<一个有趣的 5 X 5 方阵一笔画问题>中有详细介绍.在已知其结论的情况下,作为程序员的我,还是想利用该问题当做出发点,写一个可以遍 ...

  6. windows+appium自动化,Desired Capabilities参数填写,查看界面信息

    前言: 安装JDK并配置环境变量. 安装sdk并配置对应环境变量. 安装appium客户端. 手机打开开发者模式,并启用调试模式. 1.打开Appium客户端,点击Start Server V1.9. ...

  7. Genymotion 启动app闪退解决方案

    1.之前安装Genymotion后,无法联网下载模拟器 解决方法:下载ova离线包,导入即可 2.启动app,一直处于闪退状态 解决方案: 进入BIOS----->Configuration-- ...

  8. Flink快速入门--安装与示例运行

    flink是一款开源的大数据流式处理框架,他可以同时批处理和流处理,具有容错性.高吞吐.低延迟等优势,本文简述flink在windows和linux中安装步骤,和示例程序的运行. 首先要想运行Flin ...

  9. 《Java 8 in Action》Chapter 8:重构、测试和调试

    我们会介绍几种方法,帮助你重构代码,以适配使用Lambda表达式,让你的代码具备更好的可读性和灵活性.除此之外,我们还会讨论目前比较流行的几种面向对象的设计模式, 包括策略模式.模板方法模式.观察者模 ...

  10. 随笔编号-05 BigDecimal 处理集合

    1  创建一个BigDecimal 对象 BigDecimal Sum = new BigDecimal(0); 2  一个BigDecimal 对象,保留2位小数点 Sum.setScale(2,B ...