如何在 Namedparameterjdbctemplate 上执行 batchUpdate 而不是更新
How to do batchUpdate instead of update on Namedparameterjdbctemplate
我正在解析一个文件并创建一个字符串元素列表,这些元素将插入到我的 table 中。我试图设置一次插入 5 行的批量大小,但无法弄清楚如何在我的代码
中使用 .batchupdate
代替 .update
您正在呼叫 update(String sql, SqlParameterSource paramSource)
。
可比较的批处理版本是batchUpdate(String sql, SqlParameterSource[] batchArgs)
。
所以看起来很明显,作为一个批处理,构建一个数组,然后调用。
final int batchSize = 5;
List<SqlParameterSource> args = new ArrayList<>();
for (ZygateEntity zygateInfo : parseData){
SqlParameterSource source = new MapSqlParameterSource("account_name", zygateInfo.getAccountName())
.addValue("command_name", zygateInfo.getCommandName())
.addValue("system_name", zygateInfo.getSystemName())
.addValue("CREATE_DT", zygateInfo.getCreateDt());
args.add(source);
if (args.size() == batchSize) {
namedParameterJdbcTemplate.batchUpdate(sql, args.toArray(new SqlParameterSource[args.size()]));
args.clear();
}
}
if (! args.isEmpty()) {
namedParameterJdbcTemplate.batchUpdate(sql, args.toArray(new SqlParameterSource[args.size()]));
}
我正在解析一个文件并创建一个字符串元素列表,这些元素将插入到我的 table 中。我试图设置一次插入 5 行的批量大小,但无法弄清楚如何在我的代码
中使用.batchupdate
代替 .update
您正在呼叫 update(String sql, SqlParameterSource paramSource)
。
可比较的批处理版本是batchUpdate(String sql, SqlParameterSource[] batchArgs)
。
所以看起来很明显,作为一个批处理,构建一个数组,然后调用。
final int batchSize = 5;
List<SqlParameterSource> args = new ArrayList<>();
for (ZygateEntity zygateInfo : parseData){
SqlParameterSource source = new MapSqlParameterSource("account_name", zygateInfo.getAccountName())
.addValue("command_name", zygateInfo.getCommandName())
.addValue("system_name", zygateInfo.getSystemName())
.addValue("CREATE_DT", zygateInfo.getCreateDt());
args.add(source);
if (args.size() == batchSize) {
namedParameterJdbcTemplate.batchUpdate(sql, args.toArray(new SqlParameterSource[args.size()]));
args.clear();
}
}
if (! args.isEmpty()) {
namedParameterJdbcTemplate.batchUpdate(sql, args.toArray(new SqlParameterSource[args.size()]));
}