PredicatesBuilder.java 2.84 KB
package com.bsth.entity.search;

import java.text.NumberFormat;
import java.text.ParseException;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;

/**
 * 
 * @ClassName: PredicatesBuilder 
 * @author PanZhao 
 * @date 2016年3月16日 下午4:05:07 
 *
 */
public class PredicatesBuilder {

	/**
	 * Number转换器
	 */
	private static NumberFormat nf;
	
	static{
		nf = NumberFormat.getInstance();
	}
	
	public static Predicate eq(CriteriaBuilder cb,Path<?> expression, Object object){
		return cb.equal(expression, object);
	}
	
	public static Predicate ne(CriteriaBuilder cb,Path<?> expression, Object object){
		return cb.notEqual(expression, object);
	}
	
	public static Predicate gt(CriteriaBuilder cb,Path<Number> expression, Object object){
		try {
			return cb.gt(expression, nf.parse(object.toString()));
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public static Predicate ge(CriteriaBuilder cb,Path<Number> expression, Object object){
		try {
			return cb.ge(expression, nf.parse(object.toString()));
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public static Predicate lt(CriteriaBuilder cb,Path<Number> expression, Object object){
		try {
			return cb.lt(expression, nf.parse(object.toString()));
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public static Predicate le(CriteriaBuilder cb,Path<Number> expression, Object object){
		try {
			return cb.le(expression, nf.parse(object.toString()));
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public static Predicate prefixLike(CriteriaBuilder cb,Path<String> expression, Object object){
		return cb.like(expression,  object.toString() + "%");
	}
	
	public static Predicate prefixNotLike(CriteriaBuilder cb,Path<String> expression, Object object){
		return cb.notLike(expression,  object.toString() + "%");
	}
	
	public static Predicate suffixLike(CriteriaBuilder cb,Path<String> expression, Object object){
		return cb.like(expression,  "%" + object.toString());
	}
	
	public static Predicate suffixNotLike(CriteriaBuilder cb,Path<String> expression, Object object){
		return cb.notLike(expression,  "%" + object.toString());
	}
	
	public static Predicate like(CriteriaBuilder cb,Path<String> expression, Object object){
		return cb.like(expression,  "%" + object.toString() + "%");
	}
	
	public static Predicate notLike(CriteriaBuilder cb,Path<String> expression, Object object){
		return cb.notLike(expression,  "%" + object.toString() + "%");
	}
	
	public static Predicate isNull(CriteriaBuilder cb,Path<String> expression, Object object){
		return cb.isNull(expression);
	}
	
	public static Predicate isNotNull(CriteriaBuilder cb,Path<String> expression, Object object){
		return cb.isNotNull(expression);
	}
}