【问题标题】:How set Array/List in Spring jdbcTemplate as parameter?如何在 Spring jdbcTemplate 中将 Array/List 设置为参数?
【发布时间】:2016-08-08 09:12:17
【问题描述】:

我有很多占位符“?”的 SQL 查询,它是动态构建的,我想放置值数组来替换占位符。数组的大小每次都可以不同。数组按顺序由所有参数组成。

return jdbcTemplate.query(Queries.someQuery,
    new Object[] {/* Array must be here */},
    new ResultSetExtractor<List<String>>() {
        @Override
        public List<String> extractData(ResultSet resultSet) 
        }
    });

sql 生成示例:

for (int j = 0; j < y; j++) {
        conditionsBuilder.append("\n and p"+i+".object_id=o.object_id\n" +
                "    and p"+i+".attr_id =?\n" +
                "    and p"+i+".value =?\n");
        tablesBuilder.append(",patameters p"+i+" ");
        i++;
    }

【问题讨论】:

    标签: java sql spring jdbc


    【解决方案1】:

    使用ArrayList

    ArrayList<Object> values = new ArrayList<>;
    

    在您的 for 循环中,您应该按照它们在查询中出现的顺序添加值:

    values.add(value);
    

    然后把它变成一个数组:

    return jdbcTemplate.query(query, values.toArray(), resultSetExtractor);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      相关资源
      最近更新 更多