有没有办法执行以下查询:
select * from table where field in (?)
并将list / set / array作为?
占位符的值传递。
我正在使用Apache db-commons库中的QueryRunner。
答案 0 :(得分:1)
确实有,请使用createArrayOf:
final List<Integer> id = new ArrayList<>();
id.add(12);
id.add(15);
final Array toDelete = connection.createArrayOf("int", id.toArray());
queryRunner.query(
connection,
"SELECT * FROM table WHERE id = ANY(?)",
resultSetHandler,
toDelete
);
(例如使用PostgreSQL,但也适用于其他人)