亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java for循環里進行sql查詢如何優化?

java for循環里進行sql查詢如何優化?

Helenr 2019-03-01 10:27:27
問題:for循環執行sql查詢,想優化一下,想著把for循環組合成一條sql語句執行代碼: List<DataInfo> dataPotints = (ArrayList<DataInfo>) request.getAttribute("dataPotints"); ArrayList<IotDataHistory> iotDataHistories = new ArrayList<IotDataHistory>(); for (int i = 0; i < dataPotints.size(); i++) { //這里執行for循環,通過mybatis查詢,并將查詢的數據放到list里面 iotDataHistories.add(**dataService.getLastData(dataPotints.get(i))**); } String responsebody = handlerJson(iotDataHistories); log.info("獲取最后一條數據返回的json數據" + responsebody); return responsebody; 具體應該如何優化,如何合并成一條sql,改怎么合并?用union、or 還是 其它的 ?
查看完整描述

6 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

可以直接傳一個List到mapper然后動態拼成in

查看完整回答
1 反對 回復 2019-03-01
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

表結構和具體sql是什么?
可以通過for循環拼接需要傳入sql的查詢參數,然后傳入sql執行一次查詢

查看完整回答
反對 回復 2019-03-01
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

為什么不在dataService中添加另外一個getLastDatas(dataPotints)方法,Sql文的檢索條件用IN

查看完整回答
反對 回復 2019-03-01
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

select * from table where xx in ('a','b','c');
表示查詢table表里面xx等于a,b,c的記錄(mysql數據庫)

查看完整回答
反對 回復 2019-03-01
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

把循環移動到mapper,用動態生成sql
比如 你要執行10個 insert into table_name (列1, 列2,...) VALUES (值1, 值2,....)
在mapper里可以拼成 insert into table_name (列1, 列2,...) VALUES (值1, 值2,....),(值1, 值2,....),(值1, 值2,....),(值1, 值2,....),(值1, 值2,....),(值1, 值2,....),(值1, 值2,....),(值1, 值2,....),(值1, 值2,....),(值1, 值2,....)

查看完整回答
反對 回復 2019-03-01
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

我也在想,為什么不用in

查看完整回答
反對 回復 2019-03-01
  • 6 回答
  • 0 關注
  • 4102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號