Parametrización de la cláusula IN de JDBC: un enfoque eficiente
Cuando se trata de una consulta de cláusula IN, como SELECT * FROM MYTABLE WHERE MYCOL en ( ?), la parametrización de argumentos garantiza seguridad y eficiencia. Si bien JDBC no ofrece una solución directa, ciertos controladores pueden admitir PreparedStatement#setArray().
Métodos auxiliares para la parametrización
En ausencia de soporte directo, usted puede aprovechar los métodos auxiliares para generar marcadores de posición para la cláusula IN y establecer valores dinámicamente.
Ejemplo de implementación
Considere el siguiente método de acceso a datos:
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;
}
Consideraciones clave
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3