QueryBuilder
Class.createQueryBuilder(entityManager, originSql).build()
public static QueryBuilder createQueryBuilder(EntityManager entityManager, String originSql) {
return new QueryBuilder(entityManager, originSql);
}
public static final class QueryBuilder {
private EntityManager entityManager;
private String originSql;
private List<QueryParam> queryParamList = new ArrayList<>();
private List<QueryParam> orderParamList = new ArrayList<>();
private QueryBuilder(EntityManager entityManager, String originSql) {
this.entityManager = entityManager;
this.originSql = originSql;
}
public QueryBuilder equals(Object obj, String column) {
QueryParam queryParam = new QueryParam(obj, column, EQUALS);
queryParamList.add(queryParam);
return this;
}
public QueryBuilder special(boolean when, String sql, String[] paramNames, Object[] values) {
QueryParam queryParam = new QueryParam(when, sql, paramNames, values);
queryParamList.add(queryParam);
return this;
}
public QueryBuilder dateRange(DateRangeVO dateRangeVO, String column) {
String[] paramNames = {"dateFromQ", "dateToQ"};
Object[] values = {dateRangeVO.getDateFrom(), dateRangeVO.getDateTo()};
String sql = " and " + column + " between :dateFromQ and :dateToQ ";
return special(dateRangeVO.getDateFrom() != null && dateRangeVO.getDateTo() != null,
sql, paramNames, values);
}
public QueryBuilder like(String obj, String column) {
QueryParam queryParam = new QueryParam(obj, column, LIKE);
queryParamList.add(queryParam);
return this;
}
public QueryBuilder doubleLike(String obj, String column) {
QueryParam queryParam = new QueryParam(obj, column, DOUBLE_LIKE);