package com.qxueyou.scc.base.util;
|
|
import java.util.Collection;
|
import java.util.function.Function;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.util.CollectionUtils;
|
|
import com.querydsl.core.types.Ops;
|
import com.querydsl.core.types.dsl.BooleanExpression;
|
import com.querydsl.core.types.dsl.Expressions;
|
|
/**
|
* jpa²éѯ ²ÎÊýΪ¿Õ°ü×°builder
|
* @author zhiyong
|
*
|
*/
|
public class QueryDslOptionBuilder {
|
|
private BooleanExpression predicate;
|
|
public QueryDslOptionBuilder() {
|
this.predicate = Expressions.booleanOperation(Ops.EQ, Expressions.ONE, Expressions.ONE);
|
}
|
|
public QueryDslOptionBuilder(BooleanExpression predicate) {
|
this.predicate = predicate;
|
}
|
|
/**
|
* ²»Îª¿Õ and ¶ÔÏó
|
* @param expressionFunction
|
* @param value
|
* @return
|
*/
|
public <T> QueryDslOptionBuilder and(Function<T, BooleanExpression> expressionFunction, T value) {
|
if (value != null) {
|
return new QueryDslOptionBuilder(predicate.and(expressionFunction.apply(value)));
|
}
|
return this;
|
}
|
|
/**
|
* ²»Îª¿Õ and StringÀàÐÍ
|
* @param expressionFunction
|
* @param value
|
* @return
|
*/
|
public QueryDslOptionBuilder and(Function<String, BooleanExpression> expressionFunction, String value) {
|
if (!StringUtils.isBlank(value)) {
|
return new QueryDslOptionBuilder(predicate.and(expressionFunction.apply(value)));
|
}
|
return this;
|
}
|
|
/**
|
* ²»Îª¿Õ and ¼¯ºÏÀàÐÍ
|
* @param expressionFunction
|
* @param collection
|
* @return
|
*/
|
public <T> QueryDslOptionBuilder and(Function<Collection<T>, BooleanExpression> expressionFunction,
|
Collection<T> collection) {
|
if (!CollectionUtils.isEmpty(collection)) {
|
return new QueryDslOptionBuilder(predicate.and(expressionFunction.apply(collection)));
|
}
|
return this;
|
}
|
|
/**
|
* ²»Îª¿Õ or ËùÓжÔÏó
|
* @param expressionFunction
|
* @param value
|
* @return
|
*/
|
public <T> QueryDslOptionBuilder or(Function<T, BooleanExpression> expressionFunction, T value) {
|
if (value != null) {
|
return new QueryDslOptionBuilder(predicate.or(expressionFunction.apply(value)));
|
}
|
return this;
|
}
|
|
/**
|
* ²»Îª¿Õ or StringÀàÐÍ
|
* @param expressionFunction
|
* @param value
|
* @return
|
*/
|
public QueryDslOptionBuilder or(Function<String, BooleanExpression> expressionFunction, String value) {
|
if (!StringUtils.isBlank(value)) {
|
return new QueryDslOptionBuilder(predicate.or(expressionFunction.apply(value)));
|
}
|
return this;
|
}
|
|
/**
|
* ²»Îª¿Õ or ¼¯ºÏÀàÐÍ
|
* @param expressionFunction
|
* @param collection
|
* @return
|
*/
|
public <T> QueryDslOptionBuilder or(Function<Collection<T>, BooleanExpression> expressionFunction, Collection<T> collection) {
|
if (!CollectionUtils.isEmpty(collection)) {
|
return new QueryDslOptionBuilder(predicate.or(expressionFunction.apply(collection)));
|
}
|
return this;
|
}
|
|
public BooleanExpression build() {
|
return predicate;
|
}
|
}
|