java - 如何在 JdbcTemplate 中执行多批删除?
问题描述
我想一次删除多个数据库条目。只有当 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
)!
解决方案
使用batchUpdate(sql, batchArgs, argTypes)
方法。
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", "john@example.com", 42 });
batchArgs.add(new Object[] { "Jane Smith", "jane@example.com", 47 });
. . .
JdbcTemplate template = ...;
int[] rowCounts = template.batchUpdate(sql, batchArgs, argTypes);
推荐阅读
- azure-active-directory - 如何查询成员列表及其基本资料,包括 Teams 用户 ID?
- android - Android 滚动视图如何在内部工作?
- c++ - why do i get an empty line as the first output?
- java - Java Stream过滤相同的字段但不同的标准
- c# - 由 HttpClientFactory 创建的长寿 HttpClient
- android - Can nested NavHosts both be the default nav host (defaultNavHost="true")?
- r - Kendall Correlation P-Value
- java - 适用于 Windows 的 JDK/JRE 安装
- pine-script - M15 中的图形,H4 中的指标
- android - 收到通知时运行 Sqlite 代码 Xamarin Forms