In SQL-Abfragen wird die IN-Klausel verwendet, um einen Wert mit einer angegebenen Sammlung abzugleichen. Bei der Verwendung von Java und JDBC ist die Parametrisierung von Parametern in der IN-Klausel für Sicherheit und Leistung von entscheidender Bedeutung.
Gibt es eine direkte Parametrisierungsmethode?
Leider bietet JDBC keine Möglichkeit, die Werte in der IN-Klausel direkt zu parametrisieren. Einige JDBC-Treiber unterstützen jedoch möglicherweise PreparedStatement#setArray().
Eine umfassende Lösung
Um dieses Problem zu lösen, können Sie Hilfsmethoden erstellen, um Platzhalter zu generieren und die Werte in einer Schleife festzulegen. So funktioniert es:
Beispielverwendung:
<code class="language-java">import java.util.*; import java.sql.*; private static final String SQL_FIND = "SELECT id, name, value FROM entity WHERE id IN (%s)"; public List<Entity> find(Set<Long> ids) throws SQLException { List<Entity> 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()); // 执行查询... } return entities; }</code>
Hinweis: Einige Datenbanken haben Beschränkungen hinsichtlich der Anzahl der in der IN-Klausel zulässigen Werte. Oracle begrenzt dies beispielsweise auf 1000 Elemente.
Das obige ist der detaillierte Inhalt vonWie kann ich eine IN-Klausel mit JDBC effektiv parametrisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!