今天在交通费计算交易中,需要查询全部base地的交通费,需要返回map集合。然后经查资料,实现过程如下:
1.Mapper中SQL:
<!--查询返回base地的map集合--> <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集合 获取对应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结果中,list.get(0) 获取的只是一条map,并不是全部的map。SQL查询的结果中,每一条查询结果都是一个map,然后把所有map放在list中。并不是把所有的查询结果放在一个map中。map的形式是{"code1":"value1","code2":"value2","code3":"value3"...},所以需要对list遍历,取出结果放在一个新的map中返回。