zoukankan      html  css  js  c++  java
  • 实现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;
    	}
    
    }
    

      

  • 相关阅读:
    MFC tab页面中获到其它页面的数据
    sqlite数据库中"Select * From XXX能查到数据,但是Select DISTINCT group From xxx Order By group却查不出来
    关闭程序出现崩溃(exe 已触发了一个断点及未加载ucrtbased.pdb)
    springboot 通用Mapper使用
    springBoot 发布war包
    springCloud Zuul网关
    springboot hystrix turbine 聚合监控
    springBoot Feign Hystrix Dashboard
    springBoot Ribbon Hystrix Dashboard
    springBoot Feign Hystrix
  • 原文地址:https://www.cnblogs.com/chcha1/p/10710717.html
Copyright © 2011-2022 走看看