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数组。
答案 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)
我知道实现此目的的唯一方法是在创建预准备语句以添加新的?之前更改查询字符串。然后正常执行绑定。