Spring JDBC 模板的新手,但我想知道是否能够传递参数列表并对列表中的每个参数执行一次查询。正如我看到的许多示例,传递的参数列表用于使用提供的所有参数执行查询。相反,我试图多次执行查询,并且每次都使用列表中的新参数。
例如:假设我有一个 Id 列表 - 参数(字符串)
List<String> params = new ArrayList<String>();
params.add("1234");
params.add("2345");
Run Code Online (Sandbox Code Playgroud)
尝试做类似的事情:
getJdbcTemplate().query(sql, params, new CustomResultSetExtractor());
Run Code Online (Sandbox Code Playgroud)
我知道根据文件是不允许的。我的意思是,它必须是一个数组。我见过一些简单的例子,其中查询类似于"select * from employee where id = ?"并且它们正在传递new Object[]{"1234"}到方法中。我试图避免 IN() 条件。在我的情况下,每个 id 将返回多行,这就是我使用 ResultSetExtractor 的原因。
我知道一种选择是迭代列表并将列表中的每个 id 作为参数包含在内,例如:
for(String id : params){
getJdbcTemplate().query(sql, new Object[]{id}, new CustomResultSetExtractor());
}
Run Code Online (Sandbox Code Playgroud)
只是想知道我是否可以通过其他方式做到这一点。对不起,我应该提到我正在尝试做一个选择。最初希望为每个结果集返回一个自定义对象列表。
对java中的xml解析有点新,所以我试图更新xml文档中的某些元素,但我有一些问题更新正确的.
<Transactions>
<Transaction>
<id>222</id>
<time>...</time>
<date>...</date>
</Transaction>
<Transaction>
<id>333</id>
<time>...</time>
<date>...</date>
</Transaction>
</Transactions>
Run Code Online (Sandbox Code Playgroud)
给出上面的xml,假设我想修改每个事务.我想用其他一些值更新id,时间和日期.每次交易我都会用不同的数据更新.
所以我一直在努力尝试以下内容:
NodeList transactions = doc.getElementsByTagName("Transaction");
for(int i = 0; i < transactions.getLength(); i++){
NodeList id = doc.getElementsByTagName("id");
//some method to update
modifyId(id)//this works but it is doing it for all IDs in Document
}
Run Code Online (Sandbox Code Playgroud)
上面的修改方法确实有效,并且在我做了一些转换之后它会更新,但是它正在更新具有相同id,时间,日期值的所有事务.我想遍历每个"事务"并分别更新其子节点(id,时间,日期),因此它们各自将不同.如何才能做到这一点?