Я пытаюсь получить два столбца из БД с помощью 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);
для выполнения запроса.