2014-12-03 2 views
1

동일한 명령문 내에서 여러 개의 쿼리를 실행해야하는 경우가 있습니다. Java로이 작업을 수행했지만 지금은 Spring으로 전환하여 더 나은 응용 프로그램을 작성하려고합니다. 어쨌든, 나는 다음과 같은 것을 가지고있다.Spring 4.1 JdbcTemplate 여러 ResultSet의

select * from table;select * from table2; 

위의 코드는 샘플이며 실제로 2 개의 테이블을 쿼리하지는 않는다.

 PreparedStatement ps = connect.prepareStatement(sql).execute(); 

     do { 
      ResultSet rs = ps.getResultSet(); 
      ResultSetMetaData md = rs.getMetaData(); 
      int columns = md.getColumnCount(); 
      @SuppressWarnings("rawtypes") 
      ArrayList list = new ArrayList(); 
      while (rs.next()) { 
       Map row = new LinkedHashMap<String, String>(); 
       for (int i=1; i <=columns; ++i) { 
        row.put(md.getColumnName(i), rs.getObject(i)); 
        // append to our string builder the unique id for each record found 
        if(cnt == 1) { 
         if(md.getColumnName(i).equalsIgnoreCase("id")){ 
          id_list.append(rs.getObject(i) + ","); 
         } 
         if(md.getColumnName(i).equalsIgnoreCase("part_number")){ 
          suggest.append(rs.getObject(i) + "|"); 
         } 
        } 
       } 
       list.add(row); 
      } 
      result.put(label, list); 
     } while (ps.getMoreResults()); 

나는이를 손질 : 다음 작업을 수행 할 수 있어요 표준 자바 클래스와 나는 어쨌든 ... 등 인덱스에 측면 검색 및 메타 데이터에 대한 반환을 여러 레코드 집합을 사용하고있는 타사 응용 프로그램, 간결함을 위해 그러나 시각적으로 충분한 코드를 남겼습니다. JdbcTemplate.query (sql, rowmapper)를 사용하여 단일 쿼리를 실행할 수 있었으며 결과에 매우 감명 받았습니다.

누군가가 어떤 안내를 제공하고 어떤 것이 작동하는지 말해 주시면 정말 감사하겠습니다.

답변

0

JDBCTemplates를 사용할 때 다중 결과 SQL 문을 사용하지 않을 것입니다. 대신 트랜잭션을 시작하고 검색하려는 대상에 대해 template.query (...)를 여러 번 호출하십시오. 모든 SQL을 데이터베이스에 대한 단일 요청으로 밀어 넣으려는 시도는 거의 없습니다.

@Tranactional 
public void retrieveStuff(List<Stuff> stuffList) { 
    List<StuffResult> results = new ArrayList<StuffResult>(stuffList.size()); 
    for(Stuff stuff : stuffList) { 
    results.add(jdbcTemplate.queryForObject(sql, getSQLParameters(stuff), StuffResult.class)); 
    } 
    return results; 
} 
+0

당신은 조합을 할 수 있습니다. tab1 union에서 * 선택 tab2에서 선택하십시오. 이것이 현재 데이터베이스에서 작동하는지 확실하지 않습니다. –

+0

이 검색 엔진이 어떻게 작동하는지는 여러 레코드 세트를 반환하며 이는 내 통제 범위를 벗어납니다. 저에게 JSON 형식으로 데이터를 반환하는 클래스가 있지만 더 깨끗하고 유지 보수가 쉬운 접근 방식으로 Spring으로 변환하려고했습니다. –

관련 문제