欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring boot mogodb多條件拼接的解決方法

 更新時(shí)間:2018年08月17日 09:48:50   作者:我們都是和自己賽跑的人!  
這篇文章主要介紹了spring boot mogodb多條件拼接的解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

起因

當(dāng)前我們使用mongodb進(jìn)行查詢時(shí),有時(shí)我們的條件是分塊生成的,它可能來(lái)自一個(gè)列表里,我們的條件需要根據(jù)列表去返回?cái)?shù)據(jù),這里有個(gè)問題,如果遍歷列表,然后每次都去從mongodb里查詢數(shù)據(jù) ,這種性能顯然是不好的,我們需要把條件進(jìn)行拼接,一次把數(shù)據(jù)查詢出來(lái)!

分析

使用Criteria這個(gè)對(duì)象去構(gòu)建查詢條件,使用orOperator來(lái)組合多個(gè)Criteria實(shí)例,最終將列表里所有條件拼接出來(lái),從返回查詢一次即可返回全部數(shù)據(jù) 。

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

實(shí)現(xiàn)

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;

有時(shí)解決問題的方法可以有多種,我們需要從另一個(gè)方面去考慮它。

總結(jié)

以上所述是小編給大家介紹的spring boot mogodb多條件拼接的解決方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • redisson特性及優(yōu)雅實(shí)現(xiàn)示例

    redisson特性及優(yōu)雅實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了redisson特性及優(yōu)雅實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Mybatis中的延遲加載詳細(xì)解讀

    Mybatis中的延遲加載詳細(xì)解讀

    這篇文章主要介紹了Mybatis中的延遲加載詳細(xì)解讀,Mybatis中延遲加載又稱為懶加載,是指在進(jìn)行關(guān)聯(lián)查詢時(shí),按照設(shè)置延遲規(guī)則推遲對(duì)關(guān)聯(lián)對(duì)象的select查詢,延遲加載可以有效的減少數(shù)據(jù)庫(kù)的壓力,需要的朋友可以參考下
    2023-10-10
  • Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實(shí)現(xiàn)方法

    Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實(shí)現(xiàn)方法

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實(shí)現(xiàn)方法,簡(jiǎn)單描述了雙端鏈表的概念、原理并結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)雙端鏈表的相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • 使用mybatis報(bào)Invalid bound statement解決分析

    使用mybatis報(bào)Invalid bound statement解決分析

    這篇文章主要為大家介紹了使用mybatis報(bào)Invalid bound statement原因解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 詳解SpringMVC中的@RequestMapping注解

    詳解SpringMVC中的@RequestMapping注解

    這篇文章主要介紹了SpringMVC中@RequestMapping注解,@RequestMapping注解是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解,可用于映射一個(gè)請(qǐng)求或一個(gè)方法,可以用在類或方法上,需要的朋友可以參考下
    2023-07-07
  • Java實(shí)現(xiàn)二維碼生成的代碼方法

    Java實(shí)現(xiàn)二維碼生成的代碼方法

    這篇內(nèi)容分享了JAVA實(shí)現(xiàn)二維碼生成的實(shí)例代碼,對(duì)此有需要的朋友們可以測(cè)試參考下。
    2018-07-07
  • 解決springboot遇到autowire注入為null的問題

    解決springboot遇到autowire注入為null的問題

    這篇文章主要介紹了解決springboot遇到autowire注入為null的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-03-03
  • Java用for循環(huán)Map詳細(xì)解析

    Java用for循環(huán)Map詳細(xì)解析

    本篇文章主要介紹了Java用for循環(huán)Map,需要的朋友可以過來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • IDEA2022搭建Spring?Cloud多模塊項(xiàng)目的詳細(xì)過程

    IDEA2022搭建Spring?Cloud多模塊項(xiàng)目的詳細(xì)過程

    這篇文章主要介紹了IDEA2022搭建Spring?Cloud多模塊項(xiàng)目,網(wǎng)上有很多教程父模塊都是通過maven的方式創(chuàng)建的,然后子模塊是通過Spring?Initalizr方式創(chuàng)建,這種方式父模塊無(wú)法管理子模塊的依賴仲裁,需要每個(gè)子模塊自行管理,就失去了父模塊的用處了
    2022-10-10
  • SpringCloud中的路由網(wǎng)關(guān)鑒權(quán)熔斷詳解

    SpringCloud中的路由網(wǎng)關(guān)鑒權(quán)熔斷詳解

    這篇文章主要介紹了SpringCloud中的路由網(wǎng)關(guān)鑒權(quán)熔斷詳解,Hystrix是一個(gè)用于處理分布式系統(tǒng)的延遲和容錯(cuò)的開源庫(kù),在分布式系統(tǒng)里,許多依賴不可避免的會(huì)調(diào)用失敗,比如超時(shí)、異常等,需要的朋友可以參考下
    2024-01-01

最新評(píng)論