今天在交通費計算交易中,需要查詢?nèi)縝ase地的交通費,需要返回map集合。然后經(jīng)查資料,實現(xiàn)過程如下:
1.Mapper中SQL:
<select id="getBaseMap" resultType="java.util.HashMap">
select base,traffic_fare from T_EAD_TRAFFICBASE
</select>
2.DAO中的成員方法:
public List<Map<String, Object>> getBaseMap();
3.對返回List<map>的處理:
private Map<String,BigDecimal> getBaseMap(Logger logger) {
Map<String, BigDecimal> baseMap = new HashMap<String, BigDecimal>();
List<Map<String, Object>> baseList = eadTrafficBaseMapper.getBaseMap();
for (Map<String, Object> map:baseList //遍歷list
) {
String base = null;
BigDecimal fare = null;
for (Map.Entry<String,Object> entry:map.entrySet() //遍歷map的key集合 獲取對應(yīng)key的value
) {
if ("base".equals(entry.getKey())) {
base = String.valueOf(entry.getValue());
}else if ("traffic_fare".equals(entry.getKey())) {
fare = new BigDecimal(String.valueOf(entry.getValue()));
}
baseMap.put(base,fare);
}
}
return baseMap;
}
注意:在返回的list結(jié)果中,list.get(0) 獲取的只是查詢結(jié)果的一條數(shù)據(jù)的map,并不是全部數(shù)據(jù)的map。SQL查詢的結(jié)果中,每一條查詢結(jié)果都是一個map,然后把所有map放在list中。map的形式是{"code1":"value1","code2":"value2","code3":"value3"...},所以需要對list遍歷,再遍歷map,分別獲取對應(yīng)table的字段值,放入到一個新的map集合 返回,大家可以打印一下查詢結(jié)果,就一目了然了。