public String buildWhere(String resultMapId, String tableName, Object param) { List<Term> terms; if (param instanceof Param) { terms = ((Param) param).getTerms(); } else if (param instanceof Entity) { terms = SqlParamParser.parseQueryParam(param).getTerms(); } else { terms = new ArrayList<>(); } return buildWhere(resultMapId, tableName, terms); }
public static <U, T extends Query<?, U>> void applyQueryParam(T query, QueryParamEntity entity, BiConsumer<Term, T> notFound) { Class type = query.getClass(); for (Term term : entity.getTerms()) { String name = term.getColumn(); if (TermType.like.equals(term.getTermType())) {
/** * 将已有的条件包装到一个嵌套的条件里,并返回一个Query对象.例如: * <pre> * entity.toNestQuery(query->query.and("userId",userId)); * </pre> * <p> * 原有条件: name=? or type=? * <p> * 执行后条件: userId=? (name=? or type=?) * * @param before 在包装之前执行,将条件包装到已有条件之前 * @since 3.0.4 */ public <T> Query<T, QueryParamEntity> toNestQuery(Consumer<Query<T, QueryParamEntity>> before) { List<Term> terms = getTerms(); setTerms(new ArrayList<>()); Query<T, QueryParamEntity> query = toQuery(); if (null != before) { before.accept(query); } return query .nest() .each(terms, NestConditional::accept) .end(); }
private QueryParamParser parse(Object obj) { if (obj instanceof Map) { ((Map) obj).forEach((k, v) -> { String key = String.valueOf(k); if ("pageIndex".equals(key)) { query.getParam().setPageIndex(StringUtils.toInt(v)); } if ("pageSize".equals(key)) { query.getParam().setPageSize(StringUtils.toInt(v)); } if (v != null) { if (v instanceof Entity || v instanceof Map) { List<Term> terms = new QueryParamParser().parse(v).get().getTerms(); Term term = new Term(); term.setType(key.equalsIgnoreCase("or") ? Term.Type.or : Term.Type.and); term.setTerms(terms); query.getParam().getTerms().add(term); } else { consumer.accept(String.valueOf(key), v); } } }); } else { parse(FastBeanCopier.copy(obj, new LinkedHashMap<>())); } return this; }
return conditional.getParam().getTerms();
List<Term> oldParam = queryParamEntity.getTerms();
List<Term> oldParam = entity.getTerms();
public String buildWhere(String resultMapId, String tableName, Object param) { List<Term> terms; if (param instanceof Param) { terms = ((Param) param).getTerms(); } else if (param instanceof Entity) { terms = SqlParamParser.parseQueryParam(param).getTerms(); } else { terms = new ArrayList<>(); } return buildWhere(resultMapId, tableName, terms); }
public static <U, T extends Query<?, U>> void applyQueryParam(T query, QueryParamEntity entity, BiConsumer<Term, T> notFound) { Class type = query.getClass(); for (Term term : entity.getTerms()) { String name = term.getColumn(); if (TermType.like.equals(term.getTermType())) {
private QueryParamParser parse(Object obj) { if (obj instanceof Map) { ((Map) obj).forEach((k, v) -> { String key = String.valueOf(k); if ("pageIndex".equals(key)) { query.getParam().setPageIndex(StringUtils.toInt(v)); } if ("pageSize".equals(key)) { query.getParam().setPageSize(StringUtils.toInt(v)); } if (v != null) { if (v instanceof Entity || v instanceof Map) { List<Term> terms = new QueryParamParser().parse(v).get().getTerms(); Term term = new Term(); term.setType(key.equalsIgnoreCase("or") ? Term.Type.or : Term.Type.and); term.setTerms(terms); query.getParam().getTerms().add(term); } else { consumer.accept(String.valueOf(key), v); } } }); } else { parse(FastBeanCopier.copy(obj, new LinkedHashMap<>())); } return this; }
List<Term> oldParam = queryParamEntity.getTerms();
List<Term> oldParam = entity.getTerms();