Java PreparedStatement在参数中设置为int数组

Java PreparedStatement在参数中设置为int数组,java,mysql,arrays,jdbc,prepared-statement,Java,Mysql,Arrays,Jdbc,Prepared Statement,可能重复: 我希望将PreparedStatement的IN参数设置为int[]。例如,一个整数 {1,2,3,4}的数组将在查询的(1,2,3,4)中变成 是否有一种使用PreparedStatement方法实现此功能的简单方法,或者我必须通过在数组上循环来动态地将中的参数创建为字符串? 我设想的情况与int数组类似,但当然也适用于int数组。我所知道的实现这一点的唯一方法是在创建准备好的语句以添加新的?之前更改查询字符串。然后像正常一样执行绑定。我建议使用SpringJDBC。了解如何轻松

可能重复:

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

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


我设想的情况与int数组类似,但当然也适用于int数组。

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

我建议使用SpringJDBC。了解如何轻松地开始使用它:

    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);
NamedParameterJdbcTemplate t=新的NamedParameterJdbcTemplate(数据源);
Map params=新的HashMap();
参数put(“id”,Arrays.asList(1,2));
List List=t.queryForList(“从t1中选择*其中id位于(:ids)”,参数);

您将看到,它不仅体现在SpringJDBC的优点上。命名参数、无需创建/关闭连接、PreparedStatement、ResultSet、无检查异常、声明性事务支持和许多其他功能。

我认为它不是这样工作的。我认为您需要找到一种不同的语法,其中有多个?并设置每个?的值。不过,这个想法很酷。你必须编写自己的方法。e、 你可以重复使用。请注意,参数不是一个
int
s数组,而是一个
Object
s数组。我想建议您执行刚才提到的操作:通过循环数组动态构建查询。如果您想要更方便的东西,请使用JPA2(您可以将集合分配给查询参数)。因为我的问题是重复的,我投票决定结束它。(但我并没有删除它,因为我觉得我的问题的标题对于未来的程序员来说更适合搜索这个问题)。那个么,改变另一个问题的标题并删除这个问题怎么样?+1,非常有趣的方法。但是,这需要我重写我的应用程序的大部分,以适应(我不知道这种方法是否将连接池用于异步使用),因此我不会采用这种方法。我将其标记为已接受,因为这确实是我选择的方法,但我并没有投反对票,因为这是在通过评论回答问题之后提出的。不过还是谢谢你。
    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);