Java PreparedStatement将IN参数设置为int数组

时间:2012-12-04 02:56:25

标签: java mysql arrays jdbc prepared-statement

  

可能重复:
  PreparedStatement IN clause alternatives?

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数组。

2 个答案:

答案 0 :(得分: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,没有检查异常,声明性事务支持和许多其他事情。

答案 1 :(得分:0)

我知道实现此目的的唯一方法是在创建预准备语句以添加新的?之前更改查询字符串。然后正常执行绑定。