【问题标题】:Postgres SELECT WHERE IN array in Java [duplicate]Postgres SELECT WHERE IN array in Java [重复]
【发布时间】:2015-10-23 06:38:03
【问题描述】:

我想使用 WHERE IN 从数据库中选择所有记录,使用我拥有的数组中的值。有没有办法将数组实际传递给查询? 我试过SELECT id FROM tag WHERE name IN "+myArray.toString()+"。但是,当然,它注定要失败) 我可以使用preparedStatement,但是值的数量总是不同的而且相当大——大约5000。 或者也许我应该采取不同的方法?

【问题讨论】:

  • 您应该始终使用准备好的语句而不是字符串连接来创建 SQL。如果您想更灵活地使用什么作为输入,请查看 MyBatis 或 Hibernate。
  • 但是,我听说preparedStatement 比字符串concat 慢得多。这是真的吗? (不过,我知道preparedStatement 对sql 注入有好处)

标签: java database postgresql where where-in


【解决方案1】:

如果您不想使用普通的连接来执行此操作,只需使用 StringBuilder,这会更有效,因为它仅在您使用 toString() 方法时才实际创建字符串。

private String ArrayToString(String[] array)
{
    StringBuilder buffer = new StringBuilder();
    buffer.append(array[0]);

    for (int i = 1; i < array.length; i++)
    {
        buffer.append(",");
        buffer.append(array[i]);
    }

    return buffer.toString();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 2022-10-06
    • 1970-01-01
    • 2017-11-29
    • 2015-10-12
    • 2018-03-08
    • 2011-11-24
    相关资源
    最近更新 更多