我有一个查询,它提供以下输出:
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
任何人都可以帮助我吗?
答案 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]}