MongoDB根据多个条件获取多条信息

背景

在工作时,有许多大字段是存储在MongoDB中的,在列表展示的时候,分页在mysql中查询出主要信息,再根据mysql中的字段获取MongoDB中的信息,而之前的做法是通过循环调用MongoDB,这中应该是最不应该使用的一种方法,频繁的打开关闭数据库连接,性能可见一般。

使用场景极其类库

表设计

字段解释
userId用户唯一标识
productId产品唯一标识
productinfo产品详情信息
authId产品所在店铺的唯一标识
其他信息

框架支持

Spring Boot ---------为了建立项目方便
Spring Data MongoDB--------MongoTemplate
实体类与MongoDB的字段相互对应(使用方法参见 Spring官方网站)

环境

JDK 1.8
Maven(版本随意)

设计思路

简单实现

由于有多个条件的制约,自然形成的思路就是通过OR来同时查询多条数据集合
(userId=“xwb” and productId=“xwbProduct” and authId=“1”) OR (userId=“xwb1” and productId=“xwbProduct1” and authId=“2”)

代码示例如下:
在这里插入图片描述
如上完整的解决了任务,但是对于每一个表,或者如果在增加一个检索条件,那么就要重新声明一个这样的方法,对于JAVA这种的高级编程语言,就不是很合适,完全可以抽离出一个共同方法使用。

抽离出来的公用方法

  1. 对于上面的代码,不难发现返回值与入参的形式相同,所以JAVA中的泛型便可以解决这个指定查询某个表的问题。
  2. 要根据哪一些字段进行查询,如果想实现动态性,可以通过一个集合传入要使用的检索字段,再通过反射取到入参中的数据进行查询。

公共方法如下(通过字段,反射获取值的小方法美欧截出来,只截取了主要的思路部分):
在这里插入图片描述
模拟通过userId,productId,authId查询productinfo,代码如下:
在这里插入图片描述

总结

在我们习惯了去完成任务,实现增删改查的同时,也可以多使用JDK的一些特性,去抽离出好一些的方法供大家使用,节约了代码量,巩固了JAVA的相关特性,更加锻炼了我们的思路。

番外

上面的示例代码,下载链接如下(不需要会员,不需要C币):点击下载

CSDN好久不见,我又回来了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值