Mybatis註解返回Map
阿新 • • 發佈:2018-12-09
需求場景: 批量從資料庫查出若干條資料,包括id和name兩個欄位。希望可以把結果直接用Map接收,然後通過map.get(id)方便地獲取name的值。
然後,在這個Mappper的方法上面加一個註解:
/** * 根據多個id批量獲取名稱 * @param list 包含有Map key="id"的list * @return */ @MapKey("id") public Map<Integer, Map<String, Object>> getNamesByIds(List<Map<String, Object>> list);
這個註解表示最外層Map的key為查詢結果中欄位名為“id”的值。
Mapper.xml中的配置如下:
<select id="getNamesByIds" resultType="java.util.Map">
SELECT id, name FROM tb_abc WHERE id IN
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item.id}
</foreach>
</select>
上述是基於Mapper.xml檔案的返回Map形式。
註解返回的Map形式:
注意:返回的列不能用Results註解值,否則Mybatis是識別不了這個,也可以使用select * from ....之類的,用Map<Long,Map<Object,Object>>接收。