| | |
| | | |
| | | import java.lang.reflect.Field; |
| | | import java.lang.reflect.Modifier; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | import java.util.function.Consumer; |
| | | |
| | | /** |
| | |
| | | return this.buildWrapper(like, null, timeField); |
| | | } |
| | | |
| | | public QueryWrapper<T> buildWrapper(boolean like, List<String> fields) { |
| | | return this.buildWrapper(like, null, "create_time", fields); |
| | | } |
| | | |
| | | @SuppressWarnings("all") |
| | | public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField) { |
| | | QueryWrapper<T> queryWrapper = new QueryWrapper<>(); |
| | |
| | | if (this.isToUnderlineCase) { |
| | | key = Utils.toSymbolCase(key, '_'); |
| | | } |
| | | if (like) { |
| | | queryWrapper.like(key, val); |
| | | String finalKey = key; |
| | | if (like && key.contains(timeField)) { |
| | | queryWrapper.and(wrapper -> wrapper.like("`" + finalKey + "`", val)); |
| | | // queryWrapper.like("`" + key + "`", val); |
| | | } else { |
| | | queryWrapper.eq(key, val); |
| | | queryWrapper.and(wrapper -> wrapper.eq("`" + finalKey + "`", val)); |
| | | // queryWrapper.eq("`" + key + "`", val); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | if (!Cools.isEmpty(where.getCondition()) && !Cools.isEmpty(cls)) { |
| | | List<String> columns = new ArrayList<>(); |
| | | for (Field field : Cools.getAllFields(cls)){ |
| | | for (Field field : Cools.getAllFields(cls)) { |
| | | if (Modifier.isFinal(field.getModifiers()) |
| | | || Modifier.isStatic(field.getModifiers()) |
| | | || Modifier.isTransient(field.getModifiers())){ |
| | | || Modifier.isTransient(field.getModifiers())) { |
| | | continue; |
| | | } |
| | | |
| | | if (field.isAnnotationPresent(TableField.class)){ |
| | | if (field.isAnnotationPresent(TableField.class)) { |
| | | TableField annotation = field.getAnnotation(TableField.class); |
| | | if (!annotation.exist()) { |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | String column = Utils.toSymbolCase(field.getName(), '_'); |
| | | String column = Utils.toSymbolCase(field.getName(), '_'); |
| | | columns.add(column); |
| | | } |
| | | if (!columns.isEmpty()) { |
| | | for (int i=0;i<columns.size();i++){ |
| | | String column = columns.get(i); |
| | | String condition = where.getCondition(); |
| | | queryWrapper.and(wrapper -> { |
| | | for (int i = 0; i < columns.size(); i++) { |
| | | String column = columns.get(i); |
| | | String condition = where.getCondition(); |
| | | if (i == 0) { |
| | | wrapper.or().like("`" + column + "`", condition); |
| | | } else { |
| | | wrapper.or().like("`" + column + "`", condition); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | return queryWrapper; |
| | | } |
| | | |
| | | if (i == 0) { |
| | | queryWrapper.and(wrapper -> wrapper.like(column, condition)); |
| | | } else { |
| | | queryWrapper.or().like(column, condition); |
| | | @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(); |
| | | for (String key : map.keySet()) { |
| | | Object val = map.get(key); |
| | | |
| | | if (key.contains("Range")) { |
| | | ArrayList<String> list = null; |
| | | if (val instanceof ArrayList) { |
| | | list = (ArrayList<String>) val; |
| | | } |
| | | if (null != list) { |
| | | key = key.replaceAll("Range", ""); |
| | | if (this.isToUnderlineCase) { |
| | | key = Utils.toSymbolCase(key, '_'); |
| | | } |
| | | queryWrapper.ge(key, DateUtils.convert(list.get(0))); |
| | | queryWrapper.le(key, DateUtils.convert(list.get(1))); |
| | | } |
| | | } else { |
| | | if (this.isToUnderlineCase) { |
| | | key = Utils.toSymbolCase(key, '_'); |
| | | } |
| | | if (like && !fields.contains(key)) { |
| | | queryWrapper.like("`" + key + "`", val); |
| | | } else { |
| | | queryWrapper.eq("`" + key + "`", val); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (null != consumer) { |
| | | consumer.accept(queryWrapper); |
| | | } |
| | | |
| | | if (!Cools.isEmpty(where.getTimeStart())) { |
| | | Date timeStart = DateUtils.convert(String.valueOf(where.getTimeStart()), DateUtils.yyyyMMdd_F); |
| | | queryWrapper.ge(timeField, timeStart); |
| | | |
| | | } |
| | | if (!Cools.isEmpty(where.getTimeEnd())) { |
| | | Date timeStart = DateUtils.convert(String.valueOf(where.getTimeEnd()), DateUtils.yyyyMMdd_F); |
| | | queryWrapper.le(timeField, timeStart); |
| | | } |
| | | |
| | | if (!Cools.isEmpty(where.getOrderBy())) { |
| | | if (sortIsSQL(where.getOrderBy())) { |
| | | setOrders(parseOrderSQL(where.getOrderBy())); |
| | | } |
| | | } else { |
| | | // queryWrapper.orderByDesc("create_time"); |
| | | } |
| | | |
| | | if (!Cools.isEmpty(where.getCondition()) && !Cools.isEmpty(cls)) { |
| | | List<String> columns = new ArrayList<>(); |
| | | for (Field field : Cools.getAllFields(cls)) { |
| | | if (Modifier.isFinal(field.getModifiers()) |
| | | || Modifier.isStatic(field.getModifiers()) |
| | | || Modifier.isTransient(field.getModifiers())) { |
| | | continue; |
| | | } |
| | | |
| | | if (field.isAnnotationPresent(TableField.class)) { |
| | | TableField annotation = field.getAnnotation(TableField.class); |
| | | if (!annotation.exist()) { |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | String column = Utils.toSymbolCase(field.getName(), '_'); |
| | | columns.add(column); |
| | | } |
| | | // if (!columns.isEmpty()) { |
| | | // for (int i=0;i<columns.size();i++){ |
| | | // String column = columns.get(i); |
| | | // String condition = where.getCondition(); |
| | | // |
| | | // if (i == 0) { |
| | | // queryWrapper.and(wrapper -> wrapper.like("`" + column + "`", condition)); |
| | | // } else { |
| | | // queryWrapper.or().like("`" + column + "`", condition); |
| | | // } |
| | | // } |
| | | // } |
| | | if (!columns.isEmpty()) { |
| | | queryWrapper.and(wrapper -> { |
| | | for (int i = 0; i < columns.size(); i++) { |
| | | String column = columns.get(i); |
| | | String condition = where.getCondition(); |
| | | if (i == 0) { |
| | | wrapper.or().like("`" + column + "`", condition); |
| | | } else { |
| | | wrapper.or().like("`" + column + "`", condition); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | return queryWrapper; |
| | |
| | | return map; |
| | | } |
| | | |
| | | |
| | | } |