Java 如何将列表/集合/数组作为参数值传递给Apache QueryRunner?

Java 如何将列表/集合/数组作为参数值传递给Apache QueryRunner?,java,jdbc,Java,Jdbc,是否有任何方法可以执行以下查询: select * from table where field in (?) 并将列表/集合/数组作为?占位符的值传递 我正在使用Apache db commons库中的QueryRunner。当然有,请使用: final List id=new ArrayList(); 同上(12); 同上(15); final Array toDelete=connection.createArrayOf(“int”,id.toArray()); queryRunner.

是否有任何方法可以执行以下查询:

select * from table where field in (?)
并将列表/集合/数组作为
占位符的值传递

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

当然有,请使用:

final List id=new ArrayList();
同上(12);
同上(15);
final Array toDelete=connection.createArrayOf(“int”,id.toArray());
queryRunner.query(
联系,,
“从id=ANY(?)的表中选择*”,
结果萨德勒,
托德莱特
);

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

对于不熟悉的人,请展示代码,以便我们了解可用的API。我相信您可以使用('value1','value2'),但这些会出现在“in”之前,而
字段会出现在后面。可能是排序错误。我有一个很大的select查询(~35行),我的想法是将查询存储在类文件附近的资源文件中,让它成为
SearchController.java
SearchController.findclientbyp.sql
。这个大查询应该按ip或ip地址列表查找客户机。我不希望每次都构造查询,也就是说,如果我有两个ip地址作为输入,那么将查询重写为
where ip in(?,)
。这是我的控制器代码段和sql代码段,我曾经遇到过同样的问题,并且发现在QueryRunner类中这是不可能的。您必须为此编写一些自定义代码。
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
);