首页 > 其他分享 >hibernate-validator 主动调用进行参数校验

hibernate-validator 主动调用进行参数校验

时间:2023-04-07 21:55:35浏览次数:35  
标签:hibernate java 校验 validator static import violations validate

问题背景

hibernate-validator 一般通过在对象或者类上加注解的方式对Controller中的方法参数进行校验,

现需要在其他地方也可对主动对对象中的参数进行校验

代码

import lombok.experimental.UtilityClass;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.constraints.NotNull;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * hibernate-validator 主动调用进行参数校验
 *
 * @author lyn
 * @date 2023/4/7 13:09
 */
@UtilityClass
public class ManualValidUtil {

    private static final Validator VALIDATOR = Validation.buildDefaultValidatorFactory().getValidator();

    public static <T> void validObj(@NotNull T obj) {

        Set<ConstraintViolation<T>> violations = VALIDATOR.validate(obj);
        if (!violations.isEmpty()) {
            // 处理校验失败的情况
            throw new IllegalArgumentException("参数异常: " + violations.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(",")));
        }
    }

    public static <T> void validList(@NotNull List<T> list) {
        validate(list);
    }

    public static <T> void validSet(@NotNull Set<T> set) {
        validate(set);
    }

    private static <T> void validate(Collection<T> collection) {

        Set<ConstraintViolation<T>> violations = new HashSet<>();
        for (T obj : collection) {
            violations.addAll(VALIDATOR.validate(obj));
        }
        if (!violations.isEmpty()) {
            // 处理校验失败的情况
            throw new IllegalArgumentException("参数异常: " + violations.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(",")));
        }
    }
}

标签:hibernate,java,校验,validator,static,import,violations,validate
From: https://www.cnblogs.com/lyn8100/p/17297477.html

相关文章

  • 身份证精确校验
    一、es6版本constvalidateIdent={aIdentityCode_City:{//城市代码列表11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:&q......
  • svn清理时提示:没有校验和记录,因此不能从原始内容仓库中安装
      1.进入官网https://www.sqlite.org/download.html2.找到sqlite-dll-win32-x86-3410200.zip下载  3.解压后复制sqlite3.exe到无法清理svn的那个路径地下的.svn文件夹 如果找不到.svn文件夹,勾选下方    4.在当前文件夹下运行cmd执行以下语句5.再之后就......
  • nginx 配置小程序校验文件
    1、参考nginx配置小程序校验文件location/riAwbtUM3G.txt{default_typetext/html;return200"43191f769a41f4035dbc1e6d9d0cfa32";}......
  • 解决org.hibernate.LazyInitializationException的正确姿势
    转载:https://www.cnblogs.com/surging-dandelion/p/15085605.html 项目运行过程中,一个报错信息,报错信息如下:org.hibernate.LazyInitializationException:couldnotinitializeproxy[xxx.domain.Guild#CF12263C600F4BCABC9293D3FABE4B42]-noSessionatorg.hibernat......
  • SpringBoot中如何实现业务校验,这种方式才叫优雅!
    大家好,我是飘渺。在日常的接口开发中,为了保证接口的稳定安全,我们一般需要在接口逻辑中处理两种校验:参数校验业务规则校验首先我们先看看参数校验。参数校验参数校验很好理解,比如登录的时候需要校验用户名密码是否为空,创建用户的时候需要校验邮件、手机号码格式是否准确。......
  • 多个el-from提交表单时校验
    1/**提交按钮*/2asyncsubmitForm(){3letflg=true4awaitPromise.all([5this.$refs['form'].validate(),6this.$refs['formTable'].validate(),7]).catch((err)=>{8flg=......
  • 如何用java校验SQL语句的合法性?(提供五种解决方案)
    方案一:使用JDBCAPI中提供的Statement接口的execute()方法要在Java中校验SQL语句的合法性,可以使用JDBCAPI中提供的Statement接口的execute()方法。这个方法会尝试执行给定的SQL语句,如果SQL语句不合法,则会抛出一个SQLException异常。因此,我们可以利用这个异常来判断SQL语句的合法......
  • 电流互感器现场校验仪TI5800传感器供电与输出量测试仪
    TI5800集成了精密电压表、精密电流表、程控可调电压源,在测试电压或电流传感器时为其供电,并精准测量传感器的二次输出电流Is或电压Us。该仪器可与标准电流源或电压源组建传感器检测装置,实现对电压或电流传感器的测试。2.产品特征电压Us测量范围:10mV~12V。电流Is测量范围:1m......
  • CRC Cyclic Redundancy Check 循环冗余校验 CRCs Cyclic Redundancy Codes
    前言在数据传输过程中,难免会因为硬件问题,信号干扰,缓存问题,代码逻辑等导致读取到的数据与写入的数据不一致,对于这种错误的数据,我们需要能够及时发现并且进行错误处理。如果把错误的数据当作正常数据使用,会导致不可预料的各种错误。如何校验数据是否正确,正常做法就是声明一种算法,......
  • 数据校验
    在项目开发中,数据校验是必须要考虑和面对的事情。应用程序应该通过某种手段来确保存入数据库中的数据从语义上来讲是正确的。在通常的情况下,应用程序是分层的,不同的层由不同的开发人员来完成。很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理的问......