欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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