如何在Spring jdbcTemplate中将数组/列表设置为参数?

3

我有一个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++;
    }
1个回答

2
使用 ArrayList
ArrayList<Object> values = new ArrayList<>;

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

values.add(value);

然后将其转化为数组:
return jdbcTemplate.query(query, values.toArray(), resultSetExtractor);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接