我想一次删除多个数据库条目。仅当 3 个字段匹配(此处:姓名、电子邮件、年龄)时,才应删除每个条目。
如果我只想删除单个属性,我会选择:
String sql = "DELETE FROM persons WHERE (email) IN (?)";
JdbcTemplate template;
template.execute(sql, Arrays.asList(emails...));
但如果我的条件是由多个字段组成的怎么办?
String sql = "DELETE FROM persons WHERE (name, email, age) IN (?, ?, ?)";
JdbcTemplate template;
template.execute(sql, ...); ???
条件应始终匹配所有 3 个字段(AND
)!
Use the batchUpdate(sql, batchArgs, argTypes) https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html#batchUpdate-java.lang.String-java.util.List-int:A- method.
String sql = "DELETE FROM persons WHERE name = ? AND email = ? AND age = ?";
int[] argTypes = { Types.VARCHAR, Types.VARCHAR, Types.INTEGER };
List<Object[]> batchArgs = new ArrayList<>();
batchArgs.add(new Object[] { "John Doe", "[email protected] /cdn-cgi/l/email-protection", 42 });
batchArgs.add(new Object[] { "Jane Smith", "[email protected] /cdn-cgi/l/email-protection", 47 });
. . .
JdbcTemplate template = ...;
int[] rowCounts = template.batchUpdate(sql, batchArgs, argTypes);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)