2016-07-01 2 views
0

나는 그것은 다음과 같은 출력을 제공하는 쿼리가 : 나는 JDBC 템플릿과 스프링 MVC에서 사용하고JDBC 템플릿에있는 RowMapper를 구현하는 방법을

State CST QTY 
aa  0 10 
aa  1 20 
aa  2 30 
aa  3 40 
ac  0 10 
ac  1 20 
ac  2 30 
ac  3 40 

를 : 구현의 RowMapper 내가 어떤 데이터 구조 혼란스러워지고 있어요 동안을 필요 사용 방법 EXPECTED O/P 다음 다음과 같은 출력을 얻을 수있는 각 행에 매핑 :

STATE CST0 CST CST2 CST3 
aa  10 20 30 40 
ac  10 20 30 40 

이 하나가 나를 도울 수 있습니까?

+0

이 테이블 피벗 문제입니다, 당신은 SQL 쿼리에서이 작업을 수행 할 수 있습니다. – Blank

+0

변경하지 않고 쿼리가 가능하지 않습니까? – ASR

+0

'RowMapper'를 계속 사용하는 것은 아닙니다 ...하지만 왜 필요에 따라 더 복잡하게 만드는지는 데이터베이스가이를 수행 할 수 있으며 Java 응용 프로그램으로 많은 양의 데이터를 전송하여 변환하는 것이 더 효율적입니다. 너의 어플리케이션. –

답변

0

내 요구 위해 다음 코드를 사용했다 :

List<Map<String, Object>> resultMapList= new ArrayList<Map<String, Object>>(); 

     Map<String, List<Map<String, Integer>>> listMap= new TreeMap<String, List<Map<String, Integer>>>(); 

     for(Map<String, Object> mapList:resultMapList){ 
      List< Map<String, Integer>> ListMapPair= new ArrayList<Map<String, Integer>>(); 
      Map<String, Integer> entry= new HashMap<String, Integer>(); 
     } 

     Map<String, List<Object>> m= new HashMap<String, List<Object>>(); 

     List<Object> list= new ArrayList<Object>(); 
     list.add(1); 
     list.add(2); 
     list.add(3); 
     m.put("a", list); 

     List<Object> list1= new ArrayList<Object>(); 
     list1.add(4); 
     list1.add(5); 
     list1.add(6); 
     m.put("b", list1); 

     m.put("c", list); 

     System.out.println(m); 

결과물이 될 것이다 :

{A = [1, 2, 3, B = 4, 5, 6] , c = [1, 2, 3]}

1

Google 구아바 라이브러리를 사용하는 경우 Multimap이라는 새 컬렉션을 사용할 수 있습니다. 멀티 맵은 고유 키에서 값 모음 Map<K, List<V>> 또는 Map<K, Set<V>>으로 매핑합니다.

대신 RowMapper를 사용하는, 내가 오히려 처리 결과 집합에 대해 유사한 인터페이스 인 인터페이스 RowCallbackHandler 사용합니다 :

public class MyRowMapper implements RowCallbackHandler{ 

    private Multimap<String, Integer> stateByQuantity = new ArrayListMultimap(); 

    void processRow(ResultSet rs) throws SQLException { 
     String state = rs.getString("State"); 
     Integer qty = rs.getInt("QTY"); 
     stateByQuantity.put(state, qty);   
    } 
} 
관련 문제