MongoDBTemplate多條件查詢的問題


問題:

在使用Spring Data MongoDB 進行條件查詢數據時,發現條件判斷不起作用,結果會返回所有的數據。

Criteria criteria = new Criteria();
            criteria.where("shopId")
                    .is(request.getShopId())
                    .and("tradeDate").gte(request.getBeginTradeDate())
                    .lte(request.getEndTradeDate());
            List<ReportInfo> reportInfoList = reportMongoTemplate.
                    find(new Query(criteria), ReportInfo.class,"rept_wallet_refundAndPay");

原因:

經過查看文檔和源代碼才發現,Criteria的where方法是一個靜態工廠方法,它會返回一個實例化的criteria對象,所以就不需要自己new 一個criteria對象了。否則 find(new Query(criteria)里的criteria沒有任何判斷條件,因此會返回所有的數據。

MongoTemplate 源碼

    public static Criteria where(String key) {
        return new Criteria(key);
    }

修改

Criteria criteria = Criteria.where("shopId")
                    .is(request.getShopId())
                    .and("tradeDate").gte(request.getBeginTradeDate())
                    .lte(request.getEndTradeDate());
            List<ReportInfo> reportInfoList = reportMongoTemplate.
                    find(new Query(criteria), ReportInfo.class,"rept_wallet_refundAndPay");

總結:

還是要看官方的文檔和源代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM