JDBC Specification 4.0에는 일괄 업데이트 메커니즘이 설명되어 있습니다. 따라서 JDBC의 배치 기능은 삽입 또는 업데이트 용도로 사용될 수 있습니다. 이것은 제 14 장에 설명되어있다.
AFAIK 선택 배치에 대한 메커니즘이 없기 때문에 아마도 다른 쿼리가 권장하는 것처럼 쿼리를 올바르게 구성하여 한 번에 원하는 모든 행을 검색 할 수 있기 때문에 명백한 요구가 없기 때문일 수 있습니다.
int[] ids = { 1, 2, 3, 4 };
StringBuilder sql = new StringBuilder();
sql.append("select jedi_name from jedi where id in(");
for (int i = 0; i < ids.length; i++) {
sql.append("?");
if(i+1 < ids.length){
sql.append(",");
}
}
sql.append(")");
System.out.println(sql.toString());
try (Connection con = DriverManager.getConnection(...)) {
PreparedStatement stm = con.prepareStatement(sql.toString());
for(int i=0; i < ids.length; i++){
stm.setInt(i+1, ids[i]);
}
ResultSet rs = stm.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("jedi_name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
출력
select jedi_name from jedi where id in(?,?,?,?)
Luke, Obiwan, Yoda, Mace Windu
당신이 배치 select 문 같은 일을해야한다는 고려해야 왜 어떤 이유가 있나요?
"일괄 쿼리"란 정확히 무엇을 의미합니까? 둘 이상의 고객을 얻으려면'c.id in (...) '를 사용할 수 있습니다. –
"고객을위한 다중 결과 세트"란 무엇을 의미하는지 모르겠습니다. –
@a_horse_with_no_name 한 고객에 대해 하나의 결과 집합을 의미하며 반환 행을 혼합하지 마십시오. – superche