需將多個用戶名(以分號分隔)對應同一則訊息,批次寫入資料庫。
// Java 範例
String input = "user1;user2;user3";
String[] users = input.split(";");
String sql = "INSERT INTO messages (username, content, create_time) VALUES (?, ?, ?)";
try (Connection conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql)) {
conn.setAutoCommit(false);
for (String user : users) {
ps.setString(1, user.trim());
ps.setString(2, "測試訊息");
ps.setLong(3, System.currentTimeMillis());
ps.addBatch();
}
ps.executeBatch();
conn.commit();
}
優點:效能高、防注入、可控制事務。
INSERT ALL
INTO msg (user, content, time) VALUES ('user1', '測試', 1448519951050)
INTO msg (user, content, time) VALUES ('user2', '測試', 1448519951050)
INTO msg (user, content, time) VALUES ('user3', '測試', 1448519951050)
SELECT * FROM dual;