gpt4 book ai didi

java - 如何在Java中使用不同的用户ID将多行插入MySQL?

转载 作者:行者123 更新时间:2023-11-29 16:01:51 27 4
gpt4 key购买 nike

我一直在尝试实现一种代码,该代码可以从 MySQL 中的一个表中检索用户 ID 的数组列表,然后使用检索到的值将批量插入到同一 MySQL 数据库中的另一个表中。批量插入的大小或长度必须与检索到的用户 ID 的数组列表相同。

我尝试使用模型类检索用户 ID,然后使用 for 循环将其他数据(包括各种用户 ID)插入数据库中。

SubscribersServlet.java

 public static void bulkNotify(List<Notify> notifyList) {

String sql = "insert into attnotif (attndid,sender,title,message,urgency,artistid) values (?,?,?,?,?,?)";
try (Connection connection = DBConnect.getConnection()) {
connection.setAutoCommit(false);
try {
try (PreparedStatement ps = connection.prepareStatement(sql)) {
for (Notify notify : notifyList) {

ps.setInt(1, notify.getuserid());
ps.setString(2, notify.getSender());
ps.setString(3, notify.getNotifytitle());
ps.setString(4, notify.getNotifymessage());
ps.setString(5, notify.getNotifyurgency());
ps.setInt(6, notify.getArtistid());

ps.addBatch();
}
ps.executeBatch();
}
connection.commit();
} catch (SQLException e) {
e.printStackTrace();
}
}catch (SQLException e) {
e.printStackTrace();
}
}

我希望能够将标题、消息、紧急程度、artistid(全部具有相同的值)和 userid(不同的值)插入到数据库中的多行中。

最佳答案

您的 for 循环中必须有一个计数器,在该计数器达到限制后,您应该调用executeBatch() 方法。

    for (Notify notify : notifyList) {

/**
* do sth
* */

i++;

if (i % 1000 == 0 || i == notifyList.size()) {
ps.executeBatch(); // pile up 1000 items then load
}
}

关于java - 如何在Java中使用不同的用户ID将多行插入MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56120147/

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