这是基于ibatis batch insert的代码,从项目中抠出来的,希望能对你有所帮助protected boolean executeBatch(List elist, String sqlId) throws SQLException {
boolean isAutoCommit = true;
SqlMapClient sqlMapClient = this.getSqlMapClient();
try {
sqlMapClient.startTransaction();
sqlMapClient.startBatch();
isAutoCommit = sqlMapClient.getCurrentConnection().getAutoCommit();
sqlMapClient.getCurrentConnection().setAutoCommit(false);
int flag = 0;
for (int i = 0, size = elist.size(); i < size; ++i) {
sqlMapClient.insert(sqlId, elist.get(i));
if (++flag == 200) {
flag = 0;
sqlMapClient.executeBatch();
}
}
sqlMapClient.executeBatch();
sqlMapClient.commitTransaction();
} catch (SQLException e) {
sqlMapClient.getCurrentConnection().rollback();// 事务回滚
throw new SQLException(e.getCause());
} finally {
sqlMapClient.getCurrentConnection().setAutoCommit(isAutoCommit);// 恢复原来的状态
sqlMapClient.endTransaction();
}
return true;
}