如何在jdbc模板中实现RowMapper

时间:2016-07-01 08:47:01

标签: java spring spring-mvc jdbc spring-jdbc

我有一个查询,它提供以下输出:

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

我在spring mvc中使用jdbc模板:在实现RowMapper时,我感到困惑的是需要使用哪些数据结构以及如何映射每一行以获得EXPECTED O / P之后的以下输出:

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

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

如果您使用的是Google Guava库,则可以使用名为extra-enforcer-rules的新集合。多图是从唯一键映射到值集合: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);          
    }
}

答案 1 :(得分: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]}