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多条件拼接的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • redisson特性及优雅实现示例

    redisson特性及优雅实现示例

    这篇文章主要为大家介绍了redisson特性及优雅实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Mybatis中的延迟加载详细解读

    Mybatis中的延迟加载详细解读

    这篇文章主要介绍了Mybatis中的延迟加载详细解读,Mybatis中延迟加载又称为懒加载,是指在进行关联查询时,按照设置延迟规则推迟对关联对象的select查询,延迟加载可以有效的减少数据库的压力,需要的朋友可以参考下
    2023-10-10
  • Java数据结构之双端链表原理与实现方法

    Java数据结构之双端链表原理与实现方法

    这篇文章主要介绍了Java数据结构之双端链表原理与实现方法,简单描述了双端链表的概念、原理并结合实例形式分析了java实现双端链表的相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • 使用mybatis报Invalid bound statement解决分析

    使用mybatis报Invalid bound statement解决分析

    这篇文章主要为大家介绍了使用mybatis报Invalid bound statement原因解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 详解SpringMVC中的@RequestMapping注解

    详解SpringMVC中的@RequestMapping注解

    这篇文章主要介绍了SpringMVC中@RequestMapping注解,@RequestMapping注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上,需要的朋友可以参考下
    2023-07-07
  • Java实现二维码生成的代码方法

    Java实现二维码生成的代码方法

    这篇内容分享了JAVA实现二维码生成的实例代码,对此有需要的朋友们可以测试参考下。
    2018-07-07
  • 解决springboot遇到autowire注入为null的问题

    解决springboot遇到autowire注入为null的问题

    这篇文章主要介绍了解决springboot遇到autowire注入为null的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Java用for循环Map详细解析

    Java用for循环Map详细解析

    本篇文章主要介绍了Java用for循环Map,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • IDEA2022搭建Spring Cloud多模块项目的详细过程

    IDEA2022搭建Spring Cloud多模块项目的详细过程

    这篇文章主要介绍了IDEA2022搭建Spring Cloud多模块项目,网上有很多教程父模块都是通过maven的方式创建的,然后子模块是通过Spring Initalizr方式创建,这种方式父模块无法管理子模块的依赖仲裁,需要每个子模块自行管理,就失去了父模块的用处了
    2022-10-10
  • SpringCloud中的路由网关鉴权熔断详解

    SpringCloud中的路由网关鉴权熔断详解

    这篇文章主要介绍了SpringCloud中的路由网关鉴权熔断详解,Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,需要的朋友可以参考下
    2024-01-01

最新评论