实现hibernate 的validator校验
Validator校验分为快速校验和全校验。
快速校验是当遇到第一个参数不符合条件时,立即停止校验程序,将校验不通过的信息返回到前端;
全校验是将前端传过来的参数全部进行校验,将所有不通过校验的信息一起返回到前端
实现方式:
第一步:在pom.xml中添加依赖
//validate的依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.11.Final</version>
</dependency>
//java的map转bean的工具类的依赖
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
第二步:再java bean上写上校验规则的注解(更多思维校验规则可百度搜索)
例如:红色部分为检验规则,message为校验不通过时返回前端的信息
第三步:
编写validator的工具类
思路:获取validator对象,将需要校验的bean传入validator对象的validate方法中,返回的数据既是校验不通过的集合。获取validator对象时,有两种方式,failFast(true)时,获得的是快速校验的对象,failFast(false)时,获得是全校验对象。
Validator validator1=
Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
Validator validator2=
Validation.byProvider(HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator();
代码参考:
import java.util.Iterator;
import java.util.Map;
import java.util.Set; import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator; import org.apache.commons.beanutils.BeanUtils;
import org.hibernate.validator.HibernateValidator; public class DomainValidatorUtils { //获取validator对象
private static Validator validator1=
Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
private static Validator validator2=
Validation.byProvider(HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator(); public static <T> Set<ConstraintViolation<T>> validateFast(Map<String, String> map,T domain) throws Exception {
BeanUtils.populate(domain, map);
System.out.println("domain.toString()"+domain.toString());
Set<ConstraintViolation<T>> validateResult= validator1.validate(domain);
if(validateResult.size()>0) {
System.out.println(validateResult.iterator().next().getMessage()+",校验失败");
} return validateResult;
}
public static <T> Set<ConstraintViolation<T>> validateAll(Map<String, String> map,T domain) throws Exception {
BeanUtils.populate(domain, map);
System.out.println("domain.toString()"+domain.toString());
Set<ConstraintViolation<T>> validateResult= validator2.validate(domain);
if(validateResult.size()>0) {
Iterator<ConstraintViolation<T>> it=validateResult.iterator();
while(it.hasNext()) {
System.out.println(it.next().getMessage()+",校验失败");
}
} return validateResult;
} }
实现hibernate 的validator校验的更多相关文章
- springboot使用hibernate validator校验,Bean Validation校验
第一个地址:springboot使用hibernate validator校验,Bean Validation校验
- springboot使用hibernate validator校验
一.参数校验 在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦: 验证代码繁琐,重复劳动 方法内代码显得冗长 每次要 ...
- springboot使用hibernate validator校验方式
一.参数校验 在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦: 验证代码繁琐,重复劳动 方法内代码显得冗长 每次要 ...
- 4. Validator校验器的五大核心组件,一个都不能少
困难是弹簧,你弱它就强.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的 ...
- struts2学习笔记--使用Validator校验数据
我们在进行一些操作是需要对用户的输入数据进行验证,比如网站的注册,需要对各个数据项进行数据校验,Struts2提供了一些默认的校验器,比如数字的检测,邮箱的检测,字符串长度的检测等等. 常用的Vali ...
- spring boot中使用javax.validation以及org.hibernate.validator校验入参
这里springboot用的版本是:<version>2.1.1.RELEASE</version> 自带了hibernate.validator,所以不用添加额外依赖 1.创 ...
- Hibernate Validator校验参数全攻略
1. 前言 数据字段一般都要遵循业务要求和数据库设计,所以后端的参数校验是必须的,应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的. 2. 数据校验的痛点 为了保证数据语义的正确,我们 ...
- SpringBoot使用validator校验
在前台表单验证的时候,通常会校验一些数据的可行性,比如是否为空,长度,身份证,邮箱等等,那么这样是否是安全的呢,答案是否定的.因为也可以通过模拟前台请求等工具来直接提交到后台,比如postman这样的 ...
- SpringMVC使用校验validator校验对象属性
1.pom.xm添加依赖 <dependency> <groupId>javax.validation</groupId> <artifactId>va ...
随机推荐
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-10项目各种全局帮助类
本文目录 1. 前沿2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装3.XmlHelper快速操作xml文档4.SerializationHe ...
- 【NPOI】通过NPOI从内存流中创建EXCEL
一言不合就开始帖代码 XSSFWorkbook workbook = new XSSFWorkbook(); //创建工作簿 XSSFSheet sheet = (XSSFSheet)workbook ...
- 安装tensorflowGPU版本
ubuntu 16.0# 安装cuda ## 安装sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb.debsudo apt ...
- Python数据分析基础教程
Python数据分析基础教程(第2版)(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1_FsReTBCaL_PzKhM0o6l0g 提取码:nkhw 复制这段内容后 ...
- Hibernate 对象关系映射文件
简介: POJO 类和关系型数据库之间的映射可以用一个 XML 文档来定义 通过 POJO 类的数据库映射文件,Hibernate 可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据 ...
- 项目部署到tomcat
准备工作 第一步 准备项目部署文件 准备项目中使用的数据库.sql文件. 准备项目程序(整个项目的war包文件) 第二步 安装运行环境 依次安装JDK.TOMCAT.MYSQL NAVICAT需要注意 ...
- __x__(13)0906第三天__xhtml 的语法规范
html中不区分大小写,但是最好用小写. 注释不能嵌套. html标签必须结束,即 <></> 或者 < /> html标签不能交叉嵌套. html的标签,有 ...
- CSS3_伸缩盒模型_弹性布局_等分布局_flex 布局
伸缩盒模型 CSS3 引入的布局模式 Flexbox 布局 主要思想: 让容器有能力让其子项目能够改变其宽度,高度,以最佳方式填充可用空间. 特点: display: flex; 只能控制其子元 ...
- [Educational Round 5][Codeforces 616F. Expensive Strings]
这题调得我心疲力竭...Educational Round 5就过一段时间再发了_(:з」∠)_ 先后找了三份AC代码对拍,结果有两份都会在某些数据上出点问题...这场的数据有点水啊_(:з」∠)_[ ...
- myeclipse连接mysql失败出错,已解决问题
问题描述: 解决方案: