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)); } Query query = new Query(where); query.skip((page - 1) * size).limit(size); return mongoTemplate.find(query, tClass); } 上述代码中 我需要把searchMap循环放入查询条件中 代码怎么写
时间: 2024-01-05 08:05:16 浏览: 25
可以使用Map的entrySet()方法获取Map中的每一个键值对,然后通过Criteria的andOperator方法将其添加到查询条件中。修改后的代码如下:
```
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));
}
if (searchMap != null && !searchMap.isEmpty()) {
for (Map.Entry<String, String> entry : searchMap.entrySet()) {
where.andOperator(Criteria.where(entry.getKey()).is(entry.getValue()));
}
}
Query query = new Query(where);
query.skip((page - 1) * size).limit(size);
return mongoTemplate.find(query, tClass);
}
```
这样可以将searchMap中的每一个键值对作为相等的查询条件添加到where对象中。