SpringBoot 2 快速整合 | Hibernate Validator 数据校验

概述

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

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

Hibernate Validator 实战操做

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

用户Model类代码以下:app

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: 表示年龄的最小值是多少。

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

用户添加方法中的 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: 声明要校验数据的类参数
相关文章
相关标签/搜索