资讯专栏INFORMATION COLUMN

JAVA中通过Hibernate-Validation进行参数验证

Coly / 3548人阅读

摘要:在开发服务器端代码时,我们会遇到对外部传来的参数合法性进行验证,而提供了一些常用的参数校验注解,我们可以拿来使用。

在开发JAVA服务器端代码时,我们会遇到对外部传来的参数合法性进行验证,而hibernate-validator提供了一些常用的参数校验注解,我们可以拿来使用。
1.maven中引入hibernate-validator对应的jar:


    org.hibernate
    hibernate-validator
    4.3.1.Final 

2.在Model中定义要校验的字段(即该字段不能为空,并且最大长度为14):**

import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
 
public class PayRequestDto {
     
    /**
     * 支付完成时间
     **/
    @NotEmpty(message="支付完成时间不能空")
    @Size(max=14,message="支付完成时间长度不能超过{max}位")
    private String payTime;
     
    /**
     * 状态
     **/
    @Pattern(regexp = "0[0123]", message = "状态只能为00或01或02或03")
    private String status;
 
    public String getPayTime() {
        return payTime;
    }
 
    public void setPayTime(String payTime) {
        this.payTime = payTime;
    }
 
    public String getStatus() {
        return status;
    }
 
    public void setStatus(String status) {
        this.status = status;
    }
}

3.定义Validation工具类:

import java.util.Set;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;

import org.hibernate.validator.HibernateValidator;

public class ValidationUtils {
    
    /**
     * 使用hibernate的注解来进行验证
     * 
     */
    private static Validator validator = Validation
            .byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();

    /**
     * 功能描述: 
* 〈注解验证参数〉 * * @param obj * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static void validate(T obj) { Set> constraintViolations = validator.validate(obj); // 抛出检验异常 if (constraintViolations.size() > 0) { throw new RuntimeException(String.format("参数校验失败:%s", constraintViolations.iterator().next().getMessage())); } } }

4.在代码中调用工具类进行参数校验:

ValidationUtils.validate(requestDto);

以下是对hibernate-validator中部分注解进行描述:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75629.html

相关文章

  • 深入了解数据校验:Bean Validation 2.0(JSR380)

    摘要:可能有人认为数据校验模块并不是那么的重要,因为硬编码都可以做。我以数据绑定为引子引出了数据校验这一块,是想表明它的重要性。关于数据校验这块,最新的是,也就是我们常说的。 每篇一句 吾皇一日不退役,尔等都是臣子 对Spring感兴趣可扫码加入wx群:Java高工、架构师3群(文末有二维码) 前言 前几篇文章在讲Spring的数据绑定的时候,多次提到过数据校验。可能有人认为数据校验模块...

    wangtdgoodluck 评论0 收藏0
  • @Validated和@Valid的区别?校验级联属性(内部类)

    摘要:毕竟永远相信本文能给你带来意想不到的收获使用示例关于数据校验这一块在中的使用案例,我相信但凡有点经验的程序员应该没有不会使用的,并且还不乏熟练的选手。 每篇一句 NBA里有两大笑话:一是科比没天赋,二是詹姆斯没技术 相关阅读 【小家Java】深入了解数据校验:Java Bean Validation 2.0(JSR303、JSR349、JSR380)Hibernate-Validati...

    Winer 评论0 收藏0
  • 让Controller支持对平铺参数执行@Valid数据校验

    摘要:方案一借助对方法级别数据校验的能力首先必须明确一点此能力属于框架的,而部分框架。 每篇一句 在金字塔塔尖的是实践,学而不思则罔,思而不学则殆(现在很多编程框架都只是教你碎片化的实践) 相关阅读 【小家Java】深入了解数据校验:Java Bean Validation 2.0(JSR303、JSR349、JSR380)Hibernate-Validation 6.x使用案例【小家Spr...

    printempw 评论0 收藏0
  • 从深处去掌握数据校验@Valid的作用(级联校验)

    摘要:如果说要使用数据校验,我十分相信小伙伴们都能够使用,但估计大都是有个前提的环境。具体使用可参考小家让支持对平铺参数执行数据校验默认使用只能对进行校验级联校验什么叫级联校验,其实就是带校验的成员里存在级联对象时,也要对它完成校验。 每篇一句 NBA里有两大笑话:一是科比没天赋,二是詹姆斯没技术 相关阅读 【小家Java】深入了解数据校验:Java Bean Validation 2.0(...

    BlackFlagBin 评论0 收藏0
  • JVM类加载思维导图

    摘要:用一张思维导图尽可能囊括一下的类加载过程的全流程。本文参考自来自周志明深入理解虚拟机第版,拓展内容建议读者可以阅读下这本书。 用一张思维导图尽可能囊括一下JVM的类加载过程的全流程。 本文参考自来自周志明《深入理解Java虚拟机(第2版)》,拓展内容建议读者可以阅读下这本书。 showImg(http://ocxhn1mzz.bkt.clouddn.com/class%20loadin...

    Crazy_Coder 评论0 收藏0

发表评论

0条评论

Coly

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<