saveBatch()批量导入数据进入数据库的方法
时间: 2024-09-26 13:05:10 浏览: 24
`saveBatch()`是一个用于批量将数据插入数据库的方法,它通常用于减少数据库交互次数,提升数据导入效率。这个方法的具体实现可能会因使用的数据库API(如JDBC、ORM框架等)而异。以下是一个使用JDBC基本操作的例子:
```java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.List;
public class DataImporter {
private Connection connection; // 数据库连接
public void setDataConnection(Connection connection) {
this.connection = connection;
}
public void saveBatch(List<YourDataClass> dataList) {
if (dataList == null || dataList.isEmpty()) {
return;
}
StringBuilder sql = new StringBuilder("INSERT INTO your_table (col1, col2, ...) VALUES (?, ?, ...)");
try (PreparedStatement pstmt = connection.prepareStatement(sql.toString(), Statement.RETURN_GENERATED_KEYS)) { // 使用预编译的Statement
for (YourDataClass item : dataList) {
pstmt.setString(1, item.getField1());
pstmt.setInt(2, item.getField2());
// 设置其他字段...
pstmt.addBatch();
}
int[] batchCounts = pstmt.executeBatch(); // 执行批量操作
for (int i = 0; i < batchCounts.length; i++) {
if (batchCounts[i] > 0) {
// 获取生成的主键
ResultSet generatedKeys = pstmt.getGeneratedKeys();
while (generatedKeys.next()) {
Long id = generatedKeys.getLong(1);
item.setId(id); // 如果需要关联ID,可以在此处处理
}
generatedKeys.close();
}
}
} catch (SQLException e) {
handleSQLException(e);
}
}
// 处理SQL异常的方法
private void handleSQLException(SQLException e) {
// log error and recover or rollback if needed
}
}
```
在这段代码中,`YourDataClass`是你需要保存的数据实体,`setField1()`和`setField2()`等是获取对应字段值的方法。
阅读全文