Paramétrage de la clause IN JDBC : une approche efficace
Lors du traitement d'une requête de clause IN, telle que SELECT * FROM MYTABLE WHERE MYCOL in ( ?), le paramétrage des arguments garantit sécurité et efficacité. Bien que JDBC n'offre pas de solution directe, certains pilotes peuvent prendre en charge PreparedStatement#setArray().
Méthodes d'aide pour le paramétrage
En l'absence de support direct, vous peut exploiter des méthodes d'assistance pour générer des espaces réservés pour la clause IN et définir des valeurs de manière dynamique.
Exemple d'implémentation
Considérez la méthode d'accès aux données suivante :
<code class="java">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()); try (ResultSet resultSet = statement.executeQuery()) { while (resultSet.next()) { entities.add(map(resultSet)); } } } return entities; }</code>
Considérations clés
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!