3

可能重复:
PreparedStatement IN 子句替代方案?

SELECT * FROM tableName WHERE id IN ?

我希望将 PreparedStatement 的IN参数设置为int[]. 例如,查询中{1, 2, 3, 4}会变成一个整数数组。IN (1,2,3,4)

是否有一种简单的方法可以使用 PreparedStatement 的方法来实现此功能,或者我必须IN通过遍历数组来动态地将参数创建为字符串?

我想像一个类似的东西,#setString(int parameterIndex, String x)但当然是一个 int 数组。

4

2 回答 2

1

我会推荐 Spring JDBC。看看开始使用它是多么容易:

    NamedParameterJdbcTemplate t = new NamedParameterJdbcTemplate(dataSource);
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("ids", Arrays.asList(1, 2));
    List<Map<String, Object>> list = t.queryForList("select * from t1 where id in (:ids)", params);

您将看到 Spring JDBC 的优点不仅在于它。命名参数,无需创建/关闭Connection、PreparedStatement、ResultSet、无检查异常、声明式事务支持等很多东西。

于 2012-12-04T03:32:40.457 回答
0

我知道完成此操作的唯一方法是在创建准备好的语句以添加新的 ?s 之前更改查询字符串。然后像往常一样执行绑定。

于 2012-12-04T03:22:08.513 回答