我有很多动态构建的占位符“?”的 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++;
}
最佳答案
使用ArrayList
:
ArrayList<Object> values = new ArrayList<>;
在您的 for
循环中,您应该按照它们在查询中出现的顺序添加值:
values.add(value);
然后把它变成一个数组:
return jdbcTemplate.query(query, values.toArray(), resultSetExtractor);
关于java - 如何在 Spring jdbcTemplate 中将 Array/List 设置为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38825282/