必要的文字描述:
当需要成批插入或者更新记录时。可以采用Java的批量更新机制,
这一机制允许多条语句一次性提交给
数据库批量处理。通常情况下比单独提交处理更有效率;
JDBC的批量处理语句包括下面两个方法:
addBatch(String):添加需要批量处理的SQL语句或是参数;
executeBatch();执行批量处理语句;
通常我们会遇到两种批量执行SQL语句的情况:
多条SQL语句的批量处理;
一个SQL语句的批量传参;
简洁的代码:
?
/**
* <一句话功能简述>批量处理插入10000条数据
* <功能详细描述>
* @see [类、类#方法、类#成员]
*/
public void update()
{
String sql = "insert into t_emp13 (first_name,salary) values (?,?)";
Connection conn = null;
PreparedStatement preparedStatement = null;
ResultSet result = null;
long begin = System.currentTimeMillis();
try
{
conn = getConn();
conn.setAutoCommit(false);
preparedStatement = conn.prepareStatement(sql);
// 将参数放到preparedStatement的未知参数中
for (int i = 0; i < 10000; i++)
{
preparedStatement.setString(1, "name_" + i);
preparedStatement.setObject(2, i);
// 积攒SQl
preparedStatement.addBatch();
// 当积攒到一定程度 就统一执行一次,并且清空积攒的sql
if (0 == (i + 1) % 300)
{
preparedStatement.executeBatch();
preparedStatement.clearBatch();
}
}
if (0 != 10000 % 300)
{
preparedStatement.executeBatch();
preparedStatement.clearBatch();
}
conn.commit();
long end = System.currentTimeMillis();
System.out.println(begin - end);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
releaseSource(preparedStatement, conn, result);
}
}