집 >데이터 베이스 >MySQL 튜토리얼 >JDBC를 사용하여 IN 절을 효과적으로 매개변수화하려면 어떻게 해야 합니까?
SQL 쿼리에서 IN 절은 지정된 컬렉션과 값을 일치시키는 데 사용됩니다. Java 및 JDBC를 사용할 때 IN 절의 매개변수를 매개변수화하는 것은 보안 및 성능에 매우 중요합니다.
직접 매개변수화 방법이 있나요?
안타깝게도 JDBC에서는 IN 절의 값을 직접 매개변수화하는 방법을 제공하지 않습니다. 그러나 일부 JDBC 드라이버는 preparedStatement#setArray()를 지원할 수 있습니다.
종합 솔루션
이 문제를 해결하려면 자리 표시자를 생성하고 루프에서 값을 설정하는 도우미 메서드를 만들 수 있습니다. 작동 방식은 다음과 같습니다.
사용 예:
<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>
참고: 일부 데이터베이스에는 IN 절에 허용되는 값 개수에 제한이 있습니다. 예를 들어 Oracle은 이를 1000개 항목으로 제한합니다.
위 내용은 JDBC를 사용하여 IN 절을 효과적으로 매개변수화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!