public List<T> findAllByPage(Class<T> tClass, Date startTime, Date endTime, int page, int size, Map<String, String> searchMap) { Criteria where = new Criteria(); if (startTime != null && endTime != null) { where.andOperator(Criteria.where("clickTime").gte(startTime), Criteria.where("clickTime").lte(endTime)); } for (Map.Entry<String, String> entry : searchMap.entrySet()) { where.and("\"" + entry.getKey() + "\"").is(entry.getValue()); } Query query = new Query(where); query.skip((page - 1) * size).limit(size); return mongoTemplate.find(query, tClass); } } 上述代码中 where.and 后面的查询字段 是map中的key值 代码应该怎么改
时间: 2024-01-09 19:03:29 浏览: 58
详解JavaScript的Date对象(制作简易钟表)
可以将 `where.and("\"" + entry.getKey() + "\"").is(entry.getValue())` 改为 `where.and(entry.getKey()).is(entry.getValue()))` ,这样就可以直接使用 map 中的 key 作为查询字段了。修改后的代码如下:
```
public List<T> findAllByPage(Class<T> tClass, Date startTime, Date endTime, int page, int size, Map<String, String> searchMap) {
Criteria where = new Criteria();
if (startTime != null && endTime != null) {
where.andOperator(Criteria.where("clickTime").gte(startTime), Criteria.where("clickTime").lte(endTime));
}
for (Map.Entry<String, String> entry : searchMap.entrySet()) {
where.and(entry.getKey()).is(entry.getValue());
}
Query query = new Query(where);
query.skip((page - 1) * size).limit(size);
return mongoTemplate.find(query, tClass);
}
```
阅读全文