1. 程式人生 > >Mybatis註解返回Map

Mybatis註解返回Map

需求場景: 批量從資料庫查出若干條資料,包括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>>接收。