MongoTemplate | 多条件查询

MongoTemplate查询

@Resource
private MongoTemplate mongoTemplate;

public <T> List<T> getDataList(String param1, Long param2, Class<T> clazz) {
    // 构建query
    Query query = constructQuery(param1, param2);
    // 查询
    return mongoTemplate.find(query, clazz);
}

关系且

构建 Query

private Query constructQuery(String param1, String param2, String param3) {
    Query query = new Query();
    if(!Strings.isBlank(param1)){
        query.addCriteria(Criteria.where("field1").is(param1));
    }
    if(!Strings.isBlank(param2)){
        query.addCriteria(Criteria.where("field2").is(param2));
    }
    if(!Strings.isBlank(param3)){
        query.addCriteria(Criteria.where("field3").is(param3));
    }
    return query;
}

关系或

构建 Query

将所有的查询条件添加到一个 List 中,然后将其转换为一个数组,并将数组传递给 Criteria.orOperator 方法。这样,所有的查询条件将被组合成一个或条件

private Query constructQuery(String param1, String param2, String param3) {
        List<Criteria> criteriaList = new ArrayList<>();
        if(!Strings.isBlank(param1)){
            criteriaList.add(Criteria.where("field1").is(param1));
        }
        if(!Strings.isBlank(param2)){
            criteriaList.add(Criteria.where("field2").is(param2));
        }
        if(!Strings.isBlank(param3)){
            criteriaList.add(Criteria.where("field3").is(param3));
        }
        
        Criteria[] criteriaArray = new Criteria[criteriaList.size()];
        criteriaList.toArray(criteriaArray);
        
        Criteria orCriteria = new Criteria().orOperator(criteriaArray);
        Query query = new Query(orCriteria);
        return query;
    }
    

你可能感兴趣的:(数据库,数据库,java,mongodb)