JDBC IN 절 매개변수화: 효율적인 접근 방식
IN 절 쿼리를 처리할 때(예: SELECT * FROM MYTABLE WHERE MYCOL in ( ?), 인수를 매개변수화하면 보안과 효율성이 보장됩니다. 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