实现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;
	}

}

  

转载于:https://www.cnblogs.com/chcha1/p/10710717.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值