JDBC 參數化IN 子句:一種高效率的方法
處理IN 子句查詢時,例如SELECT * FROM MYTABLE WHERE MYCOL在 ( ?),參數化參數確保了安全性和效率。雖然 JDBC 不提供直接的解決方案,但某些驅動程式可能支援PreparedStatement#setArray()。
用於參數化的幫助方法
如果沒有直接支持,您可以利用輔助方法為 IN 子句產生佔位符並設定值動態。
範例實作
考慮以下資料存取方法:
private static final String SQL_FIND = "SELECT id, name, value FROM entity WHERE id IN (%s)";
public List find(Set ids) throws SQLException {
List entities = new ArrayList();
String sql = String.format(SQL_FIND, preparePlaceHolders(ids.size()));
try (
Connection connection = dataSource.getConnection();
PreparedStatement statement = connection.prepareStatement(sql);
) {
setValues(statement, ids.toArray());
try (ResultSet resultSet = statement.executeQuery()) {
while (resultSet.next()) {
entities.add(map(resultSet));
}
}
}
return entities;
}
關鍵注意事項
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3