我试图执行一个大型SQL查询,其中可能包含几个相同的IN参数,例如{arg1,arg2,arg1,arg1,arg2}。使用jdbcTemplate可以执行以下查询:
jdbcTemaplate.query(sqlQuery, new Object[] {arg1, arg2, arg1, arg1, arg2}, rowMap);
但是在某些查询中,参数的数量可能很大,因此,编写类似{arg,arg1,arg1,arg2,arg1,arg1,arg1,...}的类似参数看起来很糟糕。有什么方法可以为每个参数定义事件发生索引集并将其发送到jdbcTemplate的查询函数吗?例如,
ParamsOccurrences[] paramsOccurrences = {
new ParamsOccurrences(arg1, new int[] { 1, 4, 5, 6 }),
new ParamsOccurrences(arg2, new int[] { 2, 3 }) };
jdbcTemplate.query(sqlQuery, paramsOccurrences, rowMap);
我正在使用Oracle DB。
答案 0 :(得分:0)
我找到了适合我的解决方案。简单的方法是在jdbcTemplate的查询功能中使用 PreparedStatementSetter 参数。示例:
jdbcTemplate.query(sqlQuery, new PreparedStatementSetter() {
public void setValues(PreparedStatement preparedStatement) throws SQLException {
preparedStatement.setObject(1, arg1); //example for arg1
preparedStatement.setObject(2, arg1);
... //inside this method I just process every argument by setting specific numbers of occurrences in cycle
}
}, rowMap);