Получить пары ключ-значение как карту - PullRequest
1 голос
/ 02 марта 2012

Я пытаюсь получить два столбца из БД с помощью iBatis.Я хочу сделать это как карту, такую, чтобы resultMap.get(col1) == col2Obj.

Тот же вопрос был задан здесь , но опубликованное решение не будет работать для меня, и не с ошибкой: 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 Ответ

1 голос
/ 02 марта 2012

Вупс, я понял.

Мне нужно было использовать

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