spring boot mogodb多条件拼接的解决方法

 更新时间:2018年08月17日 09:48:50   作者:我们都是和自己赛跑的人!  
这篇文章主要介绍了spring boot mogodb多条件拼接的解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

起因

当前我们使用mongodb进行查询时,有时我们的条件是分块生成的,它可能来自一个列表里,我们的条件需要根据列表去返回数据,这里有个问题,如果遍历列表,然后每次都去从mongodb里查询数据 ,这种性能显然是不好的,我们需要把条件进行拼接,一次把数据查询出来!

分析

使用Criteria这个对象去构建查询条件,使用orOperator来组合多个Criteria实例,最终将列表里所有条件拼接出来,从返回查询一次即可返回全部数据 。

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;

有时解决问题的方法可以有多种,我们需要从另一个方面去考虑它。

总结

以上所述是小编给大家介绍的spring boot mogodb多条件拼接的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • SpringBoot项目实现统一异常处理的最佳方案

    SpringBoot项目实现统一异常处理的最佳方案

    在前后端分离的项目开发过程中,我们通常会对数据返回格式进行统一的处理,这样可以方便前端人员取数据,后端发生异常时同样会使用此格式将异常信息返回给前端,本文介绍了如何在SpringBoot项目中实现统一异常处理,如有错误,还望批评指正
    2024-02-02
  • 一文教你如何将maven项目转成web项目

    一文教你如何将maven项目转成web项目

    在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程,希望对大家有所帮助
    2025-03-03
  • Spring循环引用失败问题源码解析

    Spring循环引用失败问题源码解析

    这篇文章主要为大家介绍了Spring循环引用失败问题源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 深入理解final变量的初始化

    深入理解final变量的初始化

    本篇文章是对final变量的初始化进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Java中关于isEmpty方法、null以及““的区别

    Java中关于isEmpty方法、null以及““的区别

    这篇文章主要介绍了Java中关于isEmpty方法、null以及““的区别,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • mybatis实现增删改查_动力节点Java学院整理

    mybatis实现增删改查_动力节点Java学院整理

    本文通过实例代码给大家介绍了mybatis实现增删改查功能,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-09-09
  • Java中HTTP接口请求重试的实现方式

    Java中HTTP接口请求重试的实现方式

    HTTP接口请求重试是指在请求失败时,再次发起请求的机制,在实际应用中,由于网络波动、服务器故障等原因,HTTP接口请求可能会失败,为了保证系统的可用性和稳定性,需要对HTTP接口请求进行重试,所以本文给大家介绍了HTTP接口请求重试的实现方式,需要的朋友可以参考下
    2024-01-01
  • mybatis中foreach报错:_frch_item_0 not found的解决方法

    mybatis中foreach报错:_frch_item_0 not found的解决方法

    这篇文章主要给大家介绍了mybatis中foreach报错:_frch_item_0 not found的解决方法,文章通过示例代码介绍了详细的解决方法,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • springboot使用dubbo和zookeeper代码实例

    springboot使用dubbo和zookeeper代码实例

    这篇文章主要介绍了springboot使用dubbo和zookeeper代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • java中Hibernate的状态总结

    java中Hibernate的状态总结

    在本篇内容里小编给大家整理的是一篇关于java中Hibernate的状态总结内容,有兴趣的朋友们可以学习下。
    2021-01-01

最新评论