背景

最近有负责维护一个专门做对外数据接口的项目,由于接口数据需要加密,而且解密后的数据需要校验,手动ifelse判断非常繁琐,因此想使用hibernate validator在数据解密后手动进行校验。

依赖

需要使用以下几个依赖,这里我是用的是maven,如果没有使用maven可以手动下载jar包引入。

需要注意的一点是,如果你使用的是Jdk8,hibernate-validator不要使用7以上的版本。

以及,在某些情况下可能需要引入jboss-logging包(如果报错)

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.0.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml/classmate -->
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>classmate</artifactId>
<version>1.5.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.el/javax.el-api -->
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.web/el-impl -->
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>

实体类添加注解校验

如果需要对嵌套的实体类也进行校验,需要在属性上加上@Valid注解,比如下面的equipments

@Data
@Accessors(chain = true)
public class Gamer {
@NotBlank(message = "角色名称不能为空")
private String name;
@Range(min = 0, max = 1, message = "性别只能是0或1")
private Integer sex;
@Min(value = 1, message = "攻击力最低为1")
private Integer attack;
@Min(value = 1, message = "防御力最低为1")
private Integer defense;
@Valid
@Size(min = 1, message = "装备列表不能空")
private List<Equipment> equipments = new ArrayList<>();
}
@Data
@Accessors(chain = true)
public class Equipment {
@NotBlank(message = "装备名称不能为空")
private String name;
@NotNull(message = "装备类型不能为空")
private Integer equipmentType;
}

编写校验工具类

public class ValidationUtil {

    // 如果只需要返回第一个校验失败的信息,需要将下面的failFast设置为true
private static Validator validator = Validation
.byProvider(HibernateValidator.class)
.configure()
.failFast(false)
.buildValidatorFactory()
.getValidator(); public static <T> void validate(T bean) {
Set<ConstraintViolation<T>> validate = validator.validate(bean);
Iterator<ConstraintViolation<T>> it = validate.iterator();
for (; it.hasNext(); ) {
ConstraintViolation<T> next = it.next();
System.out.println(next);
}
}
}

测试

编写测试类进行测试

public class ValidationUtilTest {
@Test
public void testValidate() {
Gamer gamer = new Gamer();
gamer.setName("小红帽");
gamer.setAttack(-1);
gamer.setDefense(10);
gamer.setSex(0);
Equipment equipment = new Equipment().setEquipmentType(1);
gamer.getEquipments().add(equipment);
ValidationUtil.validate(gamer);
}
}

结果

普通Java项目使用Hibernate Validator进行数据校验参数校验 校验Bean的更多相关文章

  1. Java项目往数据库中插入数据,出现中文乱码

    项目环境: JSP+Servlet+Mysql数据库 需要检查的地方: 1. java项目整体的编码格式为utf-8.并且将数据传递给数据库之前,数据是否依旧是正常的(可以通过打断点的方式一步步跟踪查 ...

  2. Java笔记 #07# Hibernate Validator

    Hibernate Validator是Spring Boot默认附带的标准校验API(javax.validation)实现. 应用实例(配合切面) 采用注解定义切面.java @Aspect @C ...

  3. 一个简单的java项目使用hibernate连接mysql数据库

    实体类与表对应文件Customer.hbm.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTY ...

  4. spring 项目中使用 hibernate validator验证输入参数

    1 hibernate validator 官方文档:https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_si ...

  5. hibernate Validator 6.X 的学习,bean的约束(字段,get方法上的验证)

    一:背景说明 验证数据是一个常见的任务,它贯穿于所有应用层,从呈现到持久层.通常在每个层中都执行相同的验证逻辑,耗时且容易出错.为了避免这些验证的重复,开发商往往把验证逻辑直接进入的领域模型,在领域类 ...

  6. Hibernate实现对数据的CRUD

    今天主要去看公司的老框架, CRUD用的较多,所以总结一下步骤,以免忘记的时候温习 回顾 JDBC 工作过程: 加载驱动 建立连接 定义sql,发生sql语句 执行sql语句获得执行结果 处理返回结果 ...

  7. spring boot 1.4默认使用 hibernate validator

    spring boot 1.4默认使用 hibernate validator 5.2.4 Final实现校验功能.hibernate validator 5.2.4 Final是JSR 349 Be ...

  8. 解决Hibernate validator抛出Ljavax/validation/ParameterNameProvider异常方法

    最近升级CAS Client4.0客户端Spring版本至Spring4.*以上,升级整合hibernate框架时,Hibernate validator 4.3.0.Final使用版本(从Hiber ...

  9. Hibernate validator验证

    spring-mvc配置 <mvc:annotation-driven validator="validator" /> <bean id="valid ...

  10. JSR303的数据校验-Hibernate Validator方式实现

    1.什么是JSR303? JSR303是java为bean数据合法性校验所提供的一个标准规范,叫做Bean Validation. Bean Validation是一个运行时的数据校验框架,在验证之后 ...

随机推荐

  1. 『Plotly实战指南』--布局进阶篇

    在数据可视化领域,Plotly的子图布局是打造专业级仪表盘的核心武器. 当面对多维数据集时,合理的子图布局能显著提升多数据关联分析效率,让数据的呈现更加直观和美观. 本文将深入探讨Plotly中子图布 ...

  2. excel使用VBA连接access

    需要的引用: 下面的代码涉及excel对access数据库的增删改查,可以按照需要查找使用 1 '远程链接模块 2 Option Explicit 3 Dim con As New ADODB.Con ...

  3. 【经验】微信小程序|云后台比价(自带云开发、leancloud、bmob)(2022/10/31更新)

    这个博客UI不太好看,我另外也发在了博客园里,可点击链接查看. 文章目录 前言 1. 免费配额 2. 超过额度时收费情况 3. 另外的价钱 总结 前言 作为前端开发者,没有购买云服务器的习惯,在只需要 ...

  4. django实例(4):一对多外键关联

    程序目录 Project-->urls.pyfrom django.contrib import adminfrom django.conf.urls import url,includeurl ...

  5. 0x01 - 我的第一个 Object Visitor

    我的第一个 Object Visitor 预演准备 为了顺利的进行测试,你需要确保本地已经安装了以下这些必备的软件: dotnet 2.1 或者以上版本的 SDK,我们更建议直接安装 dotnet 5 ...

  6. Vite 3 来了!新增功能 + 如何迁移

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  7. 私人问卷收集系统-Surveyking问卷收集系统

    前言 但凡提及问卷收集系统,问卷星与腾讯问卷通常都为大家首选问卷调查系统. 担心数据安全,海量问卷管理不便,工作流创建困难?快速部署自有问卷调查系统开始你的问卷调查之旅. 无论是问卷调查,考试系统,公 ...

  8. Pycomcad快速绘制参数化多段线的一种方法

    任务: 绘制出不同长度的相同型式的多段线,如上图所示,仅仅是300mm和500mm的区别,3个弯折处都一样,都是圆弧段,对于常规二次开发思路,是通过数学计算,计算出圆弧的圆心的位置,用固定的半径,绘制 ...

  9. Spring Boot 整合 ActiveMQ 实现手动确认和重发消息

    消息队列中间件是分布式系统中重要的组件,已经逐渐成为企业系统内部通信的核心手段.主要功能包括松耦合.异步消息.流量削锋.可靠投递.广播.流量控制.最终一致性等.实现高性能,高可用,可伸缩和最终一致性架 ...

  10. 搭建邮局-1.安装hMailserver和配置邮局

    目录 搭建邮局-1.安装hMailserver和配置邮局 https://www.cnblogs.com/daen/p/16040202.html 搭建邮局-2.添加域名和域名解析 https://w ...