先说明我遇到的问题如图("mqtt_disconnect"是设备断开连接上传数据,数据点比较多。"dev_online"是重新连接没有对应多个数据点。从途中看到是一个list集合或者数组,因为“【】”):
下面说一下解决方案:
刚刚开始我的思维逻辑是做个循环一点一点查询数据库,放到集合中,当我真正实现这个功能,我很郁闷,查询数据比较缓慢,不是一般的慢,一个循环要做5-6次数据库,简直让我无法容忍,还特别占内存如图:
1.慢速解决方案一点一点查询放到集合里面:
2.快速解决方案先从数据库说起,就是一次性从数据库全部查询出来如图:
select*from zencloud_objects o
left join zencloud_payload py on o.payloadId=py.id
left join zencloud_heartbeat h on py.heartbeatId=h.id
where o.product_key=#{product_key}
这里可能会问返回什么情况?怎么处理?(如图)
如图1所示 :是返回接收是一个以字段为key,字段值为value的map集合
如图2所示:遍历这个集合相当于,你获取到的就是List之中一横段数据(如下图),你遍历之后相当于取这个每个字段名的key,去找对应的value,放到集合当中。这里相当于查询数据库就一次,速度很快比较适用。
3.如何按timestamp时间顺序显示呢?
如图:
这里就表示按字段时间顺序查询,当然可以按数字顺序类似的。