将键值对检索为地图

时间:2012-03-02 06:42:24

标签: java datamapper ibatis

我正在尝试使用iBatis从数据库中检索两列。我希望将其作为地图进行,例如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" }

由于密钥集由{“key”,“value”}组成,因此resultMap似乎没有按我的意愿去做。当我使用可能导致超过1行的参数调用查询时,我收到错误。

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

1 个答案:

答案 0 :(得分:1)

Wups,我明白了。

我需要使用

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