我有带有许多占位符“?”的 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++;
}
Use an ArrayList
:
ArrayList<Object> values = new ArrayList<>;
In your for
循环中,您应该按照它们在查询中出现的顺序添加值:
values.add(value);
然后将其转为数组:
return jdbcTemplate.query(query, values.toArray(), resultSetExtractor);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)