gpt4 book ai didi

java - 我需要更新多个选定用户的数据(在子句中使用)

转载 作者:行者123 更新时间:2023-11-29 07:38:43 25 4
gpt4 key购买 nike

for (int i = 0; i < useridArr.length; i++) {
DbUtil.executeUpdate(
conn, Mysql.insert_announcement,
new Object[]{
useridArr[i], companyid, msg, announcerid, 0, 1,
new java.util.Date().getTime()
});
}

现在,我想避免这个 for 循环,请建议我需要做什么?

最佳答案

现在,循环将为给定数组 useridArr 中的每个用户 ID 执行一个插入语句。从您的问题中尚不清楚为什么需要更改此设置。
我假设您想提高性能。这样做的方法是使用批量插入而不是多次插入。

无论如何,您将需要循环遍历用户 ID 来初始化语句值,即使它只执行一次。

您可以在 DbUtil 中添加新助手(根据需要添加异常处理并返回)

public class DbUtil {
public static void executeBatchUpdate(Connection con,
String stmt
List<Object[]> data) {
PreparedStatement p = con.prepareStatement(stmt);
for (Object[] rowData : data) {
for (int i = 0; i < rowData.length; i++) {
p.setObject(i+1, rowData[i]);
}
p.addBatch();
}
int[] results = p.executeBatch();
// check results
// handle exceptions
// return something if needed
}
}

并构建List<Object[]>像这样的循环

List<Object[]> data = new ArrayList<>(useridArr.length);
for (int i = 0; i < useridArr.length; i++) {
data.add(new Object[]{
useridArr[i], companyid, msg, announcerid, 0, 1,
new java.util.Date().getTime()
});
}

您还可以使用更专门的批量插入方法,该方法直接获取值、准备批处理并执行它,而无需构建中间行列表 Object[]

关于java - 我需要更新多个选定用户的数据(在子句中使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29789914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com