| | |
| | | return this.buildWrapper(like, null, "create_time"); |
| | | } |
| | | |
| | | /** 多表 JOIN 时给列加表别名,避免列名歧义;alias 为 null 或空时与不加别名一致 */ |
| | | private static String col(String tableAlias, String columnName) { |
| | | if (tableAlias != null && !tableAlias.isEmpty()) { |
| | | return tableAlias + ".`" + columnName + "`"; |
| | | } |
| | | return "`" + columnName + "`"; |
| | | } |
| | | |
| | | public QueryWrapper<T> buildWrapper(boolean like, String timeField) { |
| | | return this.buildWrapper(like, null, timeField); |
| | | } |
| | |
| | | return this.buildWrapper(like, null, "create_time", fields); |
| | | } |
| | | |
| | | /** 同 buildWrapper(like, consumer, timeField),tableAlias 非空时给主表列加别名,用于多表 JOIN 避免歧义;传 null 行为与原来一致 */ |
| | | @SuppressWarnings("all") |
| | | public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField) { |
| | | public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField, String tableAlias) { |
| | | QueryWrapper<T> queryWrapper = new QueryWrapper<>(); |
| | | Map<String, Object> map = where.getMap(); |
| | | for (String key : map.keySet()) { |
| | |
| | | if (this.isToUnderlineCase) { |
| | | key = Utils.toSymbolCase(key, '_'); |
| | | } |
| | | queryWrapper.ge(key, DateUtils.convert(list.get(0))); |
| | | queryWrapper.le(key, DateUtils.convert(list.get(1))); |
| | | queryWrapper.ge(col(tableAlias, key), DateUtils.convert(list.get(0))); |
| | | queryWrapper.le(col(tableAlias, key), DateUtils.convert(list.get(1))); |
| | | } |
| | | } else { |
| | | if (this.isToUnderlineCase) { |
| | |
| | | } |
| | | String finalKey = key; |
| | | if (like && key.contains(timeField)) { |
| | | queryWrapper.and(wrapper -> wrapper.like("`" + finalKey + "`", val)); |
| | | // queryWrapper.like("`" + key + "`", val); |
| | | queryWrapper.and(wrapper -> wrapper.like(col(tableAlias, finalKey), val)); |
| | | } else { |
| | | queryWrapper.and(wrapper -> wrapper.eq("`" + finalKey + "`", val)); |
| | | // queryWrapper.eq("`" + key + "`", val); |
| | | queryWrapper.and(wrapper -> wrapper.eq(col(tableAlias, finalKey), val)); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | if (!Cools.isEmpty(where.getTimeStart())) { |
| | | Date timeStart = DateUtils.convert(String.valueOf(where.getTimeStart()), DateUtils.yyyyMMdd_F); |
| | | queryWrapper.ge(timeField, timeStart); |
| | | queryWrapper.ge(col(tableAlias, timeField), timeStart); |
| | | |
| | | } |
| | | if (!Cools.isEmpty(where.getTimeEnd())) { |
| | | Date timeStart = DateUtils.convert(String.valueOf(where.getTimeEnd()), DateUtils.yyyyMMdd_F); |
| | | queryWrapper.le(timeField, timeStart); |
| | | queryWrapper.le(col(tableAlias, timeField), timeStart); |
| | | } |
| | | |
| | | if (!Cools.isEmpty(where.getOrderBy())) { |
| | | if (sortIsSQL(where.getOrderBy())) { |
| | | List<OrderItem> orders = parseOrderSQL(where.getOrderBy()); |
| | | // 如果所有排序字段都无效,使用默认排序 |
| | | if (orders.isEmpty()) { |
| | | queryWrapper.orderByDesc("create_time"); |
| | | queryWrapper.orderByDesc(col(tableAlias, "create_time")); |
| | | } else { |
| | | setOrders(orders); |
| | | } |
| | |
| | | String column = columns.get(i); |
| | | String condition = where.getCondition(); |
| | | if (i == 0) { |
| | | wrapper.or().like("`" + column + "`", condition); |
| | | wrapper.or().like(col(tableAlias, column), condition); |
| | | } else { |
| | | wrapper.or().like("`" + column + "`", condition); |
| | | wrapper.or().like(col(tableAlias, column), condition); |
| | | } |
| | | } |
| | | }); |
| | |
| | | } |
| | | |
| | | @SuppressWarnings("all") |
| | | public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField) { |
| | | return buildWrapper(like, consumer, timeField, (String) null); |
| | | } |
| | | |
| | | @SuppressWarnings("all") |
| | | public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField, List<String> fields) { |
| | | QueryWrapper<T> queryWrapper = new QueryWrapper<>(); |
| | | Map<String, Object> map = where.getMap(); |