JDBC如何拼接不确定数量的参数
程序员文章站
2024-03-01 16:57:46
...
虽然变化的参数可以用占位符 <?> 来代替,然而遗憾的是Jdbc只提供了单一占位符功能即占位符不能是一个可迭代的集合。因此,对于我们传过来的集合参数,我们可以动态地创建一个PrepareStatement:
拼一个和集合大小相等数量占位符的SQL,再写一个循环来赋值每一个占位符,这样就可以解决taskId的值变化而导致Oracle重新编译SQL问题。
private static void createQuery(List<String> taskIds) {
String query = "select * from all_element t where t.task_id in (";
StringBuilder queryBuilder = new StringBuilder(query);
for ( int i = 0; i < taskIds.size(); i++) {
queryBuilder.append( " ?");
if (i != taskIds.size() - 1)
queryBuilder.append( ",");
}
queryBuilder.append( ")");
ps = con .prepareStatement(query);
for ( int i = 1; i <= taskIds.size(); i++) {
ps.setInt(i, taskIds.get(i - 1));
}
rs = ps .executeQuery();
}
上一篇: jdbc查询
下一篇: sql 批量处理 JDBC