我有一张桌子,我可以选择像这样的单个条目:
SELECT * FROM `table` WHERE `id` = 1;我知道我可以通过多个ID来轻松选择条目:
SELECT * FROM `table` WHERE `id` IN (1,2,3);但是现在我用MariaDB / J Connector在Java中使用java.sql类实现了这个功能:
public ArrayDeque getItems(long... ids) {
ArrayDeque deque = new ArrayDeque();
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;
}现在,基本上我需要为每个要插入的变量放置一个?。由于所选Ids的数量可能有所不同,因此我无法在其中放置一个静态IN (?,?,?)。我想到的肮脏的解决方案是根据long... ids的大小生成(?,?,?) - 但是有没有更好的“更清洁”的解决方案?