中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

springboot~mogodb多(duo)條(tiao)件拼接

起因

當(dang)前我們使(shi)用mongodb進行查詢時,有時我們的(de)(de)條(tiao)(tiao)件(jian)是(shi)(shi)分塊(kuai)生(sheng)成(cheng)的(de)(de),它可能(neng)來自一(yi)個(ge)列表里,我們的(de)(de)條(tiao)(tiao)件(jian)需(xu)(xu)要(yao)(yao)根據(ju)列表去返(fan)回數(shu)據(ju),這(zhe)(zhe)里有個(ge)問題,如果遍歷列表,然后每次都去從mongodb里查詢數(shu)據(ju) ,這(zhe)(zhe)種(zhong)性能(neng)顯然是(shi)(shi)不好的(de)(de),我們需(xu)(xu)要(yao)(yao)把(ba)條(tiao)(tiao)件(jian)進行拼(pin)接,一(yi)次把(ba)數(shu)據(ju)查詢出來!

分析

使用Criteria這個對(dui)象去構建查詢條件,使用orOperator來組合多(duo)個Criteria實例,最終將列(lie)表里所有(you)條件拼接出來,從返回(hui)查詢一(yi)次即可返回(hui)全部數據 。

Criteria[] criterias = criteriaList.toArray(new Criteria[criteriaList.size()]);
Criteria criteria = new Criteria();
criteria.orOperator(criterias);
Query query = Query.query(criteria);

實現

private List<x> getClients(List<CodeAccountPeriod> codeAccountPeriods) {
  List<Criteria> criteriaList = new ArrayList<>();
    for (CodeAccountPeriod codeAccountPeriod : codeAccountPeriods) {
      criteriaList.add(where("accountPeriod").is(codeAccountPeriod.getAccountPeriod())
          .and("code").is(codeAccountPeriod.getCode())
      );
    }
    Criteria[] criterias = criteriaList.toArray(new Criteria[criteriaList.size()]);
    Criteria criteria = new Criteria();
    criteria.orOperator(criterias);
    Query query = Query.query(criteria);
    List<String> fields = new ArrayList<String>(
        Arrays.asList("accountPeriod", "code", "client", "taxProperty", "version"));
    for (String name : fields) {
      query.fields().include(name);
    }
    List<x> clients = mongoTemplate.find(query, x);
return clients;

有(you)時解決問(wen)題的方法可以(yi)有(you)多種,我們需要從(cong)另一個方面去考(kao)慮它。

posted @ 2018-08-16 18:14  張占嶺  閱讀(2813)  評論(0)    收藏  舉報