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

Ker*_*erb 6 java jdbc

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

select * from table where field in (?)
Run Code Online (Sandbox Code Playgroud)

并将列表/集合/数组作为?占位符的值传递。

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

rve*_*rve 3

当然有,使用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
);
Run Code Online (Sandbox Code Playgroud)

(示例使用 PostgreSQL,但也应该适用于其他人)