jdbctemplate等效于以下查询

时间:2019-11-20 11:59:09

标签: oracle spring-boot jdbctemplate

我有一长串参数,需要将其发送到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));

2 个答案:

答案 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;
相关问题