【发布时间】:2015-11-12 19:44:01
【问题描述】:
Spring JDBC 模板的新手,但我想知道是否能够传递参数列表并为列表中的每个参数执行一次查询。正如我看到的许多示例,传递的参数列表用于使用提供的所有参数执行查询。相反,我试图多次执行查询,并且每次都使用列表中的新参数。
例如: 假设我有一个 ID 列表 - 参数(字符串)
List<String> params = new ArrayList<String>();
params.add("1234");
params.add("2345");
尝试做类似的事情:
getJdbcTemplate().query(sql, params, new CustomResultSetExtractor());
我知道根据文档是不允许的。我的意思是它必须是一个数组。我见过一些简单的例子,其中查询类似于"select * from employee where id = ?",它们将new Object[]{"1234"} 传递给方法。我试图避免 IN() 条件。在我的情况下,每个 id 都会返回多行,这就是我使用 ResultSetExtractor 的原因。
我知道一种选择是遍历列表并将列表中的每个 id 作为参数包含在内,例如:
for(String id : params){
getJdbcTemplate().query(sql, new Object[]{id}, new CustomResultSetExtractor());
}
只是想知道我是否可以通过其他方式做到这一点。抱歉,我应该提到我正在尝试进行选择。最初希望为每个结果集返回一个自定义对象列表。
【问题讨论】:
-
也许你可以使用preparedStatement并循环你的id来设置参数,这样也可以节省你的内存和时间。