需要插入记录使用spring jdbctemplate批量更新。插入时如果发现重复记录,则需要更新记录否则插入。我怎么做? 下面是我的代码。
注意:没有包含异常处理。
result = jdbcTemplate.batchUpdate(
"insert ignore xxx set yy = ?, zz = ? where aa = ?",
new BatchPreparedStatementSetter() {
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setDouble(1, Double.parseDouble(new JSONObject(jsonArray.get(i).toString()).get("aa").toString()));
ps.setDouble(2, Double.parseDouble(new JSONObject(jsonArray.get(i).toString()).get("bb").toString()));
ps.setString(3, new JSONObject(jsonArray.get(i).toString()).get("cc").toString());
}
public int getBatchSize() {
return jsonArray.length();
}
} );
}
最佳答案
您可以使用以下选项之一:
- 正如@fbokovikov 所说,您可以使用
merge
sql 命令。 - 您可以检查记录是否存在。在性能方面,您可以先从数据库中获取所有键,然后使用这些键生成正确的插入和更新查询。在这种情况下,如果您的表中有大数据,您应该意识到性能不佳。
- 您可以先删除记录,然后再全部插入。这在性能上非常糟糕。 :-)
希望对你有帮助
关于java - 如何在插入记录时使用 spring jdbctemplate batchupdate 覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50188168/