我正在尝试删除行,其中行中的每一列都与给定键匹配。在这里,我要执行批量操作,如果该行的值在任何列表中都匹配,我将删除所有行。我们可以遍历它并一一删除,例如
for(条目条目:列表) //删除列=条目的地方
我正在寻找使用SQL和Java作为批处理操作的上述操作。
删除列与列表中的任何列匹配的行
public ResponseEntity deleteEntries(@RequestBody String ids) throws SQLException {
String[] entries = ids.split(",");
for(int i = 0; i < ids.length; i++) {
PreparedStatement preparedStatement = connection.prepareStatement("DELETE FROM LIST_ITEMS WHERE ID = ? ");
preparedStatement.setInt(1, ids[i]);
preparedStatement.executeQuery();
}
return new ResponseEntity(HttpStatus.OK);
}
批量运行以上内容,由于我将删除1000至1万个项目,因此如何批量运行以上查询?
答案 0 :(得分:1)
您可以只使用IN键世界在查询中传递列表,而不是:
DELETE FROM LIST_ITEMS WHERE ID = ?
您可以使用:
DELETE FROM LIST_ITEMS WHERE ID IN (?)
^^
您的代码如下所示:
String query = "DELETE FROM LIST_ITEMS WHERE ID IN (?)";
PreparedStatement preparedStatement = connection.prepareStatement(query);
Array array = preparedStatement.getConnection().createArrayOf("VARCHAR", entries);
preparedStatement.setArray(1, array);
preparedStatement.executeQuery();