java如何使用单例模式 批量保存数据
时间: 2024-10-14 20:14:05 浏览: 30
Java语言实现Excel的导出
在Java中,单例模式是一种常用的设计模式,用于保证一个类只有一个实例,并提供全局访问点。当我们需要批量保存数据时,可以结合单例模式创建数据库连接池或其他资源管理器,以便高效地处理多次请求。
以下是使用单例模式批量保存数据的一个简单示例:
```java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.ArrayList;
public class DBSingleton {
// 私有化构造函数防止外部直接实例化
private DBSingleton() {}
// 公共静态方法获取唯一实例
public static DBSingleton getInstance() {
if (instance == null) {
synchronized (DBSingleton.class) {
if (instance == null) {
instance = new DBSingleton();
}
}
}
return instance;
}
// 数据库连接和操作
private Connection connection;
// 批量保存数据的方法
public void batchSaveData(ArrayList<YourDataObject> dataList) {
try {
if (connection == null) {
connection = DriverManager.getConnection(...); // 获取连接
}
// 使用PreparedStatement提高性能,防止SQL注入
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO your_table VALUES (?, ?)");
for (YourDataObject data : dataList) {
preparedStatement.setInt(1, data.getId());
preparedStatement.setString(2, data.getValue());
preparedStatement.addBatch(); // 添加到批处理
}
preparedStatement.executeBatch(); // 执行所有插入语句
connection.commit(); // 提交事务
} catch (SQLException e) {
handleSQLException(e);
}
}
// 需要处理异常的方法
private void handleSQLException(SQLException e) {
e.printStackTrace();
// 实际项目中,考虑回滚事务并记录错误日志
}
}
// 使用时,在适当的地方调用
ArrayList<YourDataObject> dataList = ...; // 填充数据
DBSingleton.getInstance().batchSaveData(dataList);
```
阅读全文