JDBC IN 절 매개변수화: 효율적인 접근 방식
SELECT * FROM MYTABLE WHERE MYCOL in( ?), 인수를 매개변수화하면 보안과 효율성이 보장됩니다. JDBC는 직접적인 솔루션을 제공하지 않지만 특정 드라이버는 preparedStatement#setArray()를 지원할 수 있습니다.
매개변수화를 위한 도우미 메서드
직접 지원이 없는 경우 도우미 메서드를 활용하여 IN 절에 대한 자리 표시자를 생성하고 값을 동적으로 설정할 수 있습니다.
구현 예
다음 데이터 액세스 방법을 고려하십시오.
<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>
주요 고려 사항
위 내용은 JDBC에서 IN 절을 효과적으로 매개변수화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!