检索键值对作为地图

问题描述:

我试图从数据库检索两列与iBatis。我想把它作为一个Map,这样resultMap.get(col1) == col2Obj检索键值对作为地图

同样的问题被问到here,但发布的解决方案将不适用于我,并失败,错误:Cannot cast List as Map。我正在使用iBatis 2.3.4。 (?难道这个功能在这个版本我似乎无法找到相关文件。)

我的发言地图:

<resultMap id="countMap" class="java.util.HashMap"> 
    <result property="key" column="KEY" /> 
    <result property="value" column="VALUE" /> 
</resultMap> 
<select id="getCounts" resultMap="countMap" parameterClass="map"> 
SELECT 
    TYPE AS KEY, 
    SUM(VAL) AS VALUE 
FROM MYTABLE 
WHERE REGDATE BETWEEN #start_date# and #end_date# 
GROUP BY TYPE 
</select> 

实际查询返回:

|| KEY || VALUE || 
|| 4 || 304 || 

调用.toString()在返回地图:

{"key" : "4", "value" : "304" } 

由于键集由{“键“,”value“},resultMap似乎没有做我想做的事情。当我使用会导致多于一行的参数调用查询时,出现错误。

我正在使用sqlMapClient.queryForMap("mymap.getCounts", args);来执行查询。

+0

哪种方法的iBatis?你能发布你使用的代码吗?你也可以发布例外吗? – nwinkler 2012-03-02 07:10:49

乌普斯,我明白了。

我需要您使用运行查询使用

sqlMapClient.queryForMap("mymap.getCounts", args, "key", "value");