MyBatis查詢返回Map類型數(shù)據(jù)

今天在交通費計算交易中,需要查詢?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é)果,就一目了然了。

原文:https://blog.csdn.net/cydbetter/article/details/79074064

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容