• 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
  • 相关阅读:
    负数在计算机中的二进制表示方法
    java基础10
    购物车
    Java的深浅拷贝认识
    百分百成功的ros安装教程,有手就能看懂!!!
    比较全面的身份证校验、提取的方法
    iSpring SDK 9.7 AND iSpring SDK 10.2 AND iSpring SDK 8.7
    【自用】三阶段项目-起步
    matlab⾼级绘图时间距离图像
    【CMU 15-445】Proj1 Buffer Pool Manager
  • 原文地址:https://blog.csdn.net/weixin_44435110/article/details/133691430