问题: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 回答
jeck猫
TA贡献1909条经验 获得超7个赞
select * from table where xx in ('a','b','c');
表示查询table表里面xx等于a,b,c的记录(mysql数据库)
呼唤远方
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,....)
添加回答
举报
0/150
提交
取消