• 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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    关系且

    构建 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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    关系或

    构建 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;
        }
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    JPA在事务结束时自动更新查询数据
    单片机课程设计(Integrate就医服务平台/医院信息化平台)
    【Leetcode-链表强训】
    永恒之蓝 ms17-010
    std::logic_error 错误的解决
    水杯测试用例
    konachan网站之用户脚本优化Konachan站点浏览体验
    一次较波折的MySQL调优
    给 hugo 博客添加搜索功能
    XL7015输出12V电源设计
  • 原文地址:https://blog.csdn.net/weixin_44435110/article/details/133691430