如何将List / Set / Array作为参数值传递给Apache QueryRunner?

时间:2013-09-26 16:26:03

标签: java jdbc

有没有办法执行以下查询:

select * from table where field in (?)

并将list / set / array作为?占位符的值传递。

我正在使用Apache db-commons库中的QueryRunner。

1 个答案:

答案 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,但也适用于其他人)