使用java从数据库中选择多个ID

时间:2017-04-16 14:26:16

标签: java mysql mariadb

我有一个表格,我可以选择这样的单个条目:

SELECT * FROM `table` WHERE `id` = 1;

我知道我可以通过多个ID轻松选择条目:

SELECT * FROM `table` WHERE `id` IN (1,2,3);

但现在我使用java.sql类在MariaDB / J Connector中用Java实现了这个:

public ArrayDeque<DataType> getItems(long... ids) {
    ArrayDeque<DataType> deque = new ArrayDeque<DataType>();
    PreparedStatement st = null;
    ResultSet resultSet = null;
    try {
        st = getConnection().prepareStatement("SELECT * FROM `table` WHERE `id` = ?;");
        st.setLong(1, id);
        resultSet = st.executeQuery();
        while (resultSet.next()) {
            deque.add(parseResultSetToDataType(resultSet));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        close(resultSet, st);
    }
    return deque;
}

现在,基本上我需要为我要插入的每个变量放一个?。由于所选择的ID数量可能会有所不同,因此我无法在其中放置静态IN (?,?,?)。我想到的肮脏解决方案是根据(?,?,?)的大小生成long... ids - 但对此有更好的“更清洁”解决方案吗?

1 个答案:

答案 0 :(得分:-1)

    PreparedStatement statement = connection.prepareStatement("Select * from table where id in (?)");
    Array array = statement.getConnection().createArrayOf("int", new Object[]{1, 2,3});
    statement.setArray(1, array);