被教做人篇--我不知道的寫法java
@Autowired private MongoTemplate mongoTemplate; @Autowired private MongoPageHandler mongoPageHandler; public List<Map> handler(QueryDataByConditionsCommand command) throws EasywareException { Criteria criteria = new Criteria(); Validate.execAssert(command.getInstanceItems()!=null,"請設置默認查詢條件"); mongoPageHandler.jointParams(command.getInstanceItems(),criteria); Query query = new Query(); query.addCriteria(criteria); query.skip(command.getOffset()); query.limit(command.getLimit()); List<Sort.Order> orders = new ArrayList(); if (command.getOrderDescs() == null) { orders.add(new Sort.Order(Direction.DESC, "createTime")); } else { Iterator iterator = command.getOrderDescs().iterator(); while(iterator.hasNext()) { OrderDesc orderDesc = (OrderDesc)iterator.next(); orders.add(new Sort.Order(orderDesc.isAsc() ? Direction.ASC : Direction.DESC, orderDesc.getProperty())); } } Sort sort = Sort.by(orders); query.with(sort); List<Map> results = mongoTemplate.find(query,Map.class, command.getEntityName()); return results; }
MongoPageHandler:mongodb
代碼已刪除,能夠看下面博主寫的
感嘆mongodb封裝之完善,本身見識之匱乏!!!spa
一直自覺得是mongodb封裝的沒想到是大佬手寫的!!!code
1 @Component 2 public class MongoPageHandler { 3 4 5 /** 6 * 將map轉化爲criteria條件 7 * @param map 8 * @param criteria 9 * @version 1.0 10 */ 11 public void transformation(Map<String, Object> map, Criteria criteria) { 12 List<Param> params = new ArrayList<>(); 13 Iterator<String> iterator = map.keySet().iterator(); 14 while (iterator.hasNext()) { 15 String key = iterator.next(); 16 if(key.contains("From")) { 17 String newKey = key.replace("From", ""); 18 Map<String, Object> result = contains(params, newKey); 19 if((boolean)result.get("result")) { 20 Param param = (Param)result.get("data"); 21 param.lteValue = map.get(newKey); 22 params.add(param); 23 }else { 24 Param param = new Param(); 25 param.name = newKey; 26 param.lteValue = map.get(key); 27 params.add(param); 28 } 29 }else if(key.contains("To")) { 30 String newKey = key.replace("To", ""); 31 Map<String, Object> result = contains(params, newKey); 32 if((boolean)result.get("result")) { 33 Param param = (Param)result.get("data"); 34 param.gteValue = map.get(newKey); 35 params.add(param); 36 }else { 37 Param param = new Param(); 38 param.name = newKey; 39 param.gteValue = map.get(key); 40 params.add(param); 41 } 42 } else { 43 criteria.and(key).is(map.get(key)); 44 } 45 46 Iterator<Param> paramIterator = params.iterator(); 47 while (paramIterator.hasNext()) { 48 Param next = paramIterator.next(); 49 if(next.lteValue != null && next.gteValue != null) { 50 criteria.and(next.name).lte(next.lteValue).gte(next.gteValue); 51 }else if (next.lteValue != null) { 52 criteria.and(next.name).gte(next.lteValue); 53 } else { 54 criteria.and(next.name).gte(next.gteValue); 55 } 56 } 57 } 58 } 59 60 public Map<String, Object> contains(List<Param> params, String name) { 61 Map<String, Object> result = new HashMap<>(); 62 for(Param param : params) { 63 if(param.name.equals(name)) { 64 result.put("result", true); 65 result.put("data", param); 66 return result; 67 } 68 } 69 result.put("result", false); 70 result.put("data", null); 71 return result; 72 } 73 74 /** 75 * 將map轉化爲criteria 76 * @param map 77 * @param criteria 78 * @version 2.0 79 */ 80 public void trans(Map<String, Object> map, Criteria criteria) { 81 Map<String, Param> params = new HashMap<>(); 82 Iterator<String> iterator = map.keySet().iterator(); 83 while (iterator.hasNext()) { 84 String key = iterator.next(); 85 if(key.contains("From")) { 86 String newKey = key.replace("From", ""); 87 if(params.get(newKey) != null) { 88 Param param = (Param)params.get(key); 89 param.lteValue = map.get(key); 90 params.put(newKey, param); 91 }else { 92 Param param = new Param(); 93 param.name = newKey; 94 param.lteValue = map.get(key); 95 params.put(newKey, param); 96 } 97 }else if(key.contains("To")) { 98 String newKey = key.replace("To", ""); 99 if(params.get(newKey) != null) { 100 Param param = (Param)params.get(newKey); 101 param.gteValue = map.get(key); 102 params.put(newKey, param); 103 }else { 104 Param param = new Param(); 105 param.name = newKey; 106 param.gteValue = map.get(key); 107 params.put(newKey, param); 108 } 109 } else { 110 criteria.and(key).is(map.get(key)); 111 } 112 113 Iterator<Param> paramIterator = params.values().iterator(); 114 while (paramIterator.hasNext()) { 115 Param next = paramIterator.next(); 116 if(next.lteValue != null && next.gteValue != null) { 117 criteria.and(next.name).lte(next.lteValue).gte(next.gteValue); 118 }else if (next.lteValue != null) { 119 criteria.and(next.name).gte(next.lteValue); 120 } else { 121 criteria.and(next.name).gte(next.gteValue); 122 } 123 } 124 } 125 } 126 127 128 /** 129 * 將map轉化爲criteria 130 * @param map 131 * @param criteria 132 * @version 3.0 133 */ 134 public void conversion(Map<String, Object> map, Criteria criteria) { 135 Map<String, Param> params = new HashMap<>(); 136 Iterator<String> iterator = map.keySet().iterator(); 137 while (iterator.hasNext()) { 138 String key = iterator.next(); 139 if(key.contains("From")) { 140 String newKey = key.replace("From", ""); 141 Param param = params.get(newKey); 142 if(null == param) { 143 param = new Param(); 144 param.name = newKey; 145 } 146 param.gteValue = map.get(key); 147 params.put(newKey, param); 148 }else if(key.contains("To")) { 149 String newKey = key.replace("To", ""); 150 Param param = params.get(newKey); 151 if(param == null) { 152 param = (Param)params.get(newKey); 153 param.name = newKey; 154 } 155 param.lteValue = map.get(key); 156 params.put(newKey, param); 157 } else { 158 criteria.and(key).is(map.get(key)); 159 } 160 161 Iterator<Param> paramIterator = params.values().iterator(); 162 while (paramIterator.hasNext()) { 163 Param next = paramIterator.next(); 164 if(next.lteValue != null && next.gteValue != null) { 165 criteria.and(next.name).lte(next.lteValue).gte(next.gteValue); 166 }else if (next.lteValue != null) { 167 criteria.and(next.name).gte(next.lteValue); 168 } else { 169 criteria.and(next.name).gte(next.gteValue); 170 } 171 } 172 } 173 } 174 175 176 public class Param { 177 String name; 178 Object lteValue; 179 Object gteValue; 180 public Param() { 181 } 182 } 183 184 }
思想在提高,代碼更加簡潔orm