我有一长串参数,需要将其发送到oracle数据库。我可以通过拆分查询来做到这一点,但是我找不到使用jdbcTemplate做类似事情的方法。我的查询是:
select name,age from person where personId in (A1,F2,D3...G900)
or personId in (A901, C902 , ... R1800)
or personId in (A1801,G1802 .... H2700)
or personId in (P2701, G2702 ... R3600)
或者因为oracle允许超过1000个touple,但是不允许JDBC等效,所以
SELECT field1, field2, field3
FROM table1
WHERE (1, name) IN ((1, value1), (1, value2), (1, value3),.....(1, value5000));
答案 0 :(得分:0)
List<Map<String, Object>> findPeeps(List<Long> personIds) {
String sql = "select name,age from person where personId in (:personIds)";
return namedParameterJdbcTemplate.queryForList(sql, new MapSqlParameterSource("personIds", personIds));
}
答案 1 :(得分:0)
就像@zaki所说的那样,您可以使用它,但是由于您可以在WHERE IN子句中添加记录限制,因此收到的错误来自Oracle。您可以尝试这样的事情
insert into TEMP values ( ... );
select * from T where (a,b) in (select x,y from temp);
delete from TEMP;