JDBC-Parametrisierung der IN-Klausel: Ein effizienter Ansatz
Beim Umgang mit einer IN-Klausel-Abfrage wie SELECT * FROM MYTABLE WHERE MYCOL in ( ?) sorgt die Parametrisierung von Argumenten für Sicherheit und Effizienz. Während JDBC keine direkte Lösung bietet, unterstützen bestimmte Treiber möglicherweise PreparedStatement#setArray().
Hilfsmethoden für die Parametrisierung
In Ermangelung direkter Unterstützung, Sie kann Hilfsmethoden nutzen, um Platzhalter für die IN-Klausel zu generieren und Werte dynamisch festzulegen.
Beispielimplementierung
Betrachten Sie die folgende Datenzugriffsmethode:
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;
}
Wichtige Überlegungen
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3