先說明我遇到的問題如圖("mqtt_disconnect"是設備斷開連接上傳數據,數據點比較多。"dev_online"是重新連接沒有對應多個數據點。從途中看到是一個list集合或者數組,因為“【】”):
下面說一下解決方案:
剛剛開始我的思維邏輯是做個循環一點一點查詢數據庫,放到集合中,當我真正實現這個功能,我很郁悶,查詢數據比較緩慢,不是一般的慢,一個循環要做5-6次數據庫,簡直讓我無法容忍,還特別占內存如圖:
1.慢速解決方案一點一點查詢放到集合里面:
這是比較笨的辦法而且不實用
2.快速解決方案先從數據庫說起,就是一次性從數據庫全部查詢出來如圖:
這是根據一個值查詢3張表
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}
這里可能會問返回什么情況?怎么處理?(如圖)
返回map集合
如圖1所示 :是返回接收是一個以字段為key,字段值為value的map集合
如圖2所示:遍歷這個集合相當于,你獲取到的就是List之中一橫段數據(如下圖),你遍歷之后相當于取這個每個字段名的key,去找對應的value,放到集合當中。這里相當于查詢數據庫就一次,速度很快比較適用。
3.如何按timestamp時間順序顯示呢?
如圖:
對應字段加上就ok拉
這里就表示按字段時間順序查詢,當然可以按數字順序類似的。