Java和MySQL PreparedStatement:在表中存储5000个数字。什么是正确的方法?

时间:2010-08-09 13:43:28

标签: java mysql

我正在使用Java-facebook-api编写一个facebook应用程序 和MySQL 5.1。

我正在尝试找到一种更快捷的方式来存储登录我的应用程序的用户的好友列表。

当用户登录我的应用程序时,会发生以下情况:

  1. 删除已登录用户的旧好友列表
  2. 将用户好友列表收集到ArrayList
  3. 在Java中,我正在为数组列表中的每个数字执行for循环,并执行插入以将新的朋友ID插入到朋友表中。
  4. 有没有办法让所有情况更快?

    例如,我考虑创建一个接收当前用户的uid和一群朋友的存储过程,但我读到并理解MySQL 5.1中的存储过程无法接收数组。

    朋友列表非常简单:

    id int(10) <- primary key
    user_friends_uid bigint
    timestamp TIMESTAMP
    

    任何帮助将不胜感激。

    谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用JDBC批量更新:

    PreparedStatement stmt = getSql().prepareStatement(...);
    try {
        for (Row row: rows) {
            stmt.setLong(1, row.id);
            ...
            stmt.addBatch();
        }
        stmt.executeBatch();
    } finally {
        stmt.close();
    }