广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Hibernate-Validator(数据校验框架)
  • 643
分享到

Hibernate-Validator(数据校验框架)

javahibernatespring 2023-08-17 10:08:29 643人浏览 薄情痞子
摘要

目录 一、Hibernate-Validator 简介二、项目中为什么要用校验框架三、添加依赖四、看一个入门级案例五、常用注解六、使用groups的校验 一、Hibernate-Validator 简介 hibernate-

一、Hibernate-Validator 简介

hibernate-validatorHibernate项目中的一个数据校验框架,它能够将数据校验从业务代码中脱离出来,增加代码可读性,同时也让数据校验变得更加方便、简单。

官网地址:http://hibernate.org/validator/documentation


二、项目中为什么要用校验框架

Java程序开发中,当你要处理一个程序的业务逻辑时,请求参数的数据校验是必须要处理的。当请求参数格式不正确的时候,需要程序监测到,并且返回对应的错误提示,以此来达到数据校验的目的。对于前后端分离开发过程中,数据校验还需要返回对应的状态码和错误提示信息。

三、添加依赖

    org.hibernate.validator    hibernate-validator

如果使用了SpringBoot,则不需要引用任何依赖,因为spring-boot-starter-WEB包中已经包含了Hibernate-Validator 依赖。
在这里插入图片描述


四、看一个入门级案例

  • 现有一个实体类

    @Data@AllArgsConstructor@NoArgsConstructorpublic class StudentPo {    @NotBlank(message = "用户名不能为空")    private String name;    @NotBlank(message = "邮箱不能为空")    private String email;}
  • POST接口控制器
    POST请求必须要加@Valid

    // 注意:@Valid 不加这个注解,@NotBlank注解不生效@RestControllerpublic class StudentPoController {    @RequestMapping(value = "/addStudent", method = RequestMethod.POST)    public String addStudent(@Valid @RequestBody StudentPo student){        System.out.println("student = [" + student + "]");        return "ok";    }}
  • 用postman测试
    在这里插入图片描述

  • 这种参数校验出现的异常,我们可以用全局异常处理类处理

    @ControllerAdvicepublic class GlobalExceptionHandler {    @ExceptionHandler(MethodArgumentNotValidException.class)    @ResponseBody    public ResultEntity handleBindException(MethodArgumentNotValidException ex) {        FieldError fieldError = ex.getBindingResult().getFieldError();        return ResultEntity.faill(211, fieldError.getDefaultMessage(), null);    }}@Data@AllArgsConstructor@NoArgsConstructorpublic class ResultEntity {    private Integer code;    private String message;    private T data;    public static  ResultEntity faill(Integer code, String msg, T t) {        return new ResultEntity(code, msg, t);    }}
  • 再次用postman测试
    在这里插入图片描述

  • 外加一个GET接口的控制器的写法

    // Get请求需要在类上添加@Validated@RestController@Validatedpublic class StudentController {     @RequestMapping(value = "/addStudent1",method = RequestMethod.GET)    public String addStudent1(@NotBlank(message = "name不能为空") String name){        System.out.println("name = [" + name + "]");        return "ok addStudent1";    }}

五、常用注解

注解说明用法例子
@Nul被注释的元素必须为 null
@NotNull被注释的元素必须不为 null@NotNull 用在基本类型
@AssertTrue被注释的元素必须为 true
@AssertFalse被注释的元素必须为 false
@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min)被注释的元素的大小必须在指定的范围内,元素必须为集合,代表集合个数
@Pattern(regexp = )正则表达式校验
@Digits (integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past被注释的元素必须是一个过去的日期
@Future被注释的元素必须是一个将来的日期
@Email被注释的元素必须是电子邮箱地址
@Length(min=, max=)被注释的字符串的大小必须在指定的范围内,必须为数组或者字符串,若微数组则表示为数组长度,字符串则表示为字符串长度
@NotEmpty被注释的字符串的必须非空@NotEmpty 用在集合类上面
@Range(min=, max=)被注释的元素必须在合适的范围内
@NotBlank被注释的字符串的必须非空@NotBlank 用在String上面
@URI字符串是否是一个有效的URL

注意:
1.@NotNull:不能为null,但可以为empty(“”," “,” “)
2.@NotEmpty:不能为null,而且长度必须大于0 (” “,” ")
3.@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0(“test”) 即:必须有实际字符


六、使用groups的校验

  • 1、情景说明
    同一个对象要复用,比如UserDTO在更新时候要校验userId,在保存的时候不需要校验userId,在两种情况下都要校验username,那就用上groups了:

  • 先定义groups的分组接口Create和Update

    import javax.validation.groups.Default;public interface Create extends Default {}import javax.validation.groups.Default;public interface Update extends Default{}
  • 再在需要校验的地方@Validated声明校验组

        @PostMapping("/update/groups")    public RspDTO update(@RequestBody @Validated(Update.class) UserDTO userDTO) {        userService.updateById(userDTO);        return RspDTO.success();    }
  • 在DTO中的字段上定义好groups = {}的分组类型

    @Datapublic class UserDTO implements Serializable {    private static final long serialVersionUID = 1L;        @NotNull(message = "用户id不能为空", groups = Update.class)    private Long userId;        @NotBlank(message = "用户名不能为空")    @Length(max = 20, message = "用户名不能超过20个字符", groups = {Create.class, Update.class})    @Pattern(regexp = "^[\\u4E00-\\u9FA5A-Za-z0-9\\*]*$", message = "用户昵称限制:最多20字符,包含文字、字母和数字")    private String username;        @NotBlank(message = "手机号不能为空")    @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误", groups = {Create.class, Update.class})    private String mobile;        private String sex;        @NotBlank(message = "联系邮箱不能为空")    @Email(message = "邮箱格式不对")    private String email;        private String passWord;        @Future(message = "时间必须是将来时间", groups = {Create.class})    private Date createTime;}

来源地址:https://blog.csdn.net/weixin_45080272/article/details/128413908

--结束END--

本文标题: Hibernate-Validator(数据校验框架)

本文链接: https://www.lsjlt.com/news/372643.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Hibernate-Validator(数据校验框架)
    目录 一、Hibernate-Validator 简介二、项目中为什么要用校验框架三、添加依赖四、看一个入门级案例五、常用注解六、使用groups的校验 一、Hibernate-Validator 简介 hibernate-...
    99+
    2023-08-17
    java hibernate spring
  • hibernate-validator如何使用校验框架
    目录一、前言二、常用注解说明三、定义校验分组四、定义校验Bean五、validator基本使用六、借助BindingResult七、全局拦截校验器八、借助ValidatorUtils...
    99+
    2022-11-13
  • hibernate-validator改进校验框架validator v0.4怎么使用
    这篇文章主要讲解了“hibernate-validator改进校验框架validator v0.4怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“hibernate-vali...
    99+
    2023-07-05
  • SpringBoot参数校验Validator框架详解
    目录SpringBoot 如何进行参数校验1.集成Validator校验框架1.1. 引入依赖包1.2. 定义要参数校验的实体类1.3. 定义校验类进行测试1.4. 测试结果11.5...
    99+
    2022-11-13
  • SpringBoot参数校验Validator框架怎么使用
    这篇“SpringBoot参数校验Validator框架怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringB...
    99+
    2023-07-02
  • Spring Boot使用 Hibernate-Validator校验参数时的长度校验
    今天在使用Validator框架数据验证的时候碰到了三个类似的注解,都是用来限制长度,但是用法上有区别: 1,@Size和@Length @Datapublic class LoginVo { @Length(min = 5, ma...
    99+
    2023-09-26
    spring boot hibernate java
  • hibernate-validator后端表单数据校验的使用示例详解
    目录hibernate-validator后端表单数据校验的使用1、hibernate-validator介绍2、hibernate-validator常用注解3、 hibernat...
    99+
    2022-11-13
  • golan参数校验Validator
    目录1.实践1.1校验标签1.2字符串约束1.3自定义校验器前言: 开发接口的时候需要多前端提交的参数进行参数校验,如果提交的参数只有一个两个,这样我们可以简单写个if判断,但是如果...
    99+
    2022-11-12
  • Springboot hibernate-validator 6.x快速校验示例代码
    目录一、版本信息及maven依赖二、定义实体bean三、测试Controller四、hibernate-validator全局异常处理五、hibernate-validator快速校...
    99+
    2022-11-12
  • GoFrame框架数据校验之校验对象校验结构体
    目录前言摘要基本概念方法介绍简要说明注意问题TIPS链式操作示例1:单数据校验简单示例进阶示例进阶示例打印结果示例2:Map数据校验示例3:Struct数据校验总结前言摘要 这篇文章...
    99+
    2022-11-13
  • SpringMVC使用hibernate-validator进行参数校验最佳实践记录
    在我们用Controller接收参数后,往往需要对参数进行校验。如果我们手写校验的话,就会有一堆的判空代码,看起来很不优雅,写起来也费时费力。下面来看下通过hibernate-val...
    99+
    2022-11-12
  • springboot中validator数据校验功能的实现
    普通校验 导入依赖: 默认的报错:没有提示具体的属性 设置自己的错误信息提示:创建 ValidationMessages.properties 内容如下: user.id....
    99+
    2022-11-12
  • GoFrame框架数据校验之校验结果Error接口对象
    目录基本介绍方法示例注意问题方法详解进阶注意问题总结上一篇文章介绍了 GoFrame数据校验之校验对象 | 校验结构体 ,得到了大家积极的反馈。 再接再厉,这篇总结分享:GoFram...
    99+
    2022-11-13
  • 如何实现golan参数校验Validator
    这篇文章主要介绍如何实现golan参数校验Validator,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.实践go get github.com/go-playground/validator...
    99+
    2023-06-22
  • springmvc的validator数据校验的实现示例代码
    一、什么是数据校验?这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验。数据校验分为客户端校验和服务端校验客户端校验:js校验服务端校验:springmvc使用v...
    99+
    2023-05-31
    spring mvc 数据
  • SprinBoot如何集成参数校验Validator及参数校验的高阶技巧
    目录为什么需要参数校验SpringBoot中集成参数校验第一步,引入依赖第二步,定义要参数校验的实体类第三步,定义校验类进行测试第四步,体验效果参数异常加入全局异常处理器体验效果自定...
    99+
    2022-11-13
  • Struts2之Validator验证框架的详细介绍
    Struts2中提供了数据校验验证数据例如验证邮件、数字等。验证方式有3种:一是通过validate()方法,二是通过Xml,三是使用注解方式。一、初始化首先定义一个User类package com.cyw.test;import java...
    99+
    2023-05-31
    struts 验证 dat
  • 使用Spring注入Hibernate验证框架
    目录Spring注入Hibernate验证框架Spring配置文件Hibernate内置的验证约束注解如下表所示springmvc使用Hibernate的校验框架validation...
    99+
    2022-11-12
  • java开发之基于Validator接口的SpringMVC数据校验方式
    目录1.定义实体类Account2.自定义验证器 AccountValidator,实现 Validator 接口3.控制器4. springmvc.xml 配置验证器5.jsp文件...
    99+
    2022-11-12
  • golang validator库参数校验实用技巧有哪些
    这篇“golang validator库参数校验实用技巧有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“gol...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作