1. 程式人生 > 其它 >淺析Mybatis如何返回Map結構、@MapKey()的使用、返回List<Map<K,V>> 結構型別資料

淺析Mybatis如何返回Map結構、@MapKey()的使用、返回List<Map<K,V>> 結構型別資料

一、Mybatis返回Map結構

// 使用Mybatis返回Map結構時,欄位別名需要用雙引號包裹否則別名會全部小寫,沒有駝峰
<select id="selectById" resultType = "map"> 
    select id as "myId",name as "myName" from t_user
</select>
// 物件則不用
<select id="selectById" resultType = "xxx.User"> 
    select id as myId,name as myName from t_user
</select
>

二、@MapKey()的使用

  這個註解是作用在方法上面的,具體的用法就是設定外面Map的KEY是什麼。這樣我們就能夠查詢出非常複雜的結果,而不用在建立一個新的實體。

  希望mybatis返回以下Map格式資料:

{
    "100": {
        "id": 100,
        "name": "小民",
        "age": 20
    },
    "101": {
        "id": 101,
        "name": "小白",
        "age": 20
    }
}
@MapKey("id")
Map<Integer, StudentDO> groupById();

<select id="groupById" resultType="StudentDO"> select * from student </select>

  即可達到上面的效果。

三、返回List<Map<K,V>> 結構型別資料

// dao層
List<Map<String, Object>> selectInviteRank();
// xml
<select id="selectInviteRank" resultMap="TestMap">
</select>

<resultMap id="
TestMap" type="java.util.HashMap">   <result column="userId" property="test1"></result>   <result column="invites" property="invites"></result>   <result column="account" property="account"></result>   <result column="headImgUrl" property="headImgUrl"></result> </resultMap>

  需要注意的是 userId 轉為了 test1,createdTime 的駝峰,如果沒在 resuleMap 里加的話,會變成小寫。