淺析Mybatis如何返回Map結構、@MapKey()的使用、返回List<Map<K,V>> 結構型別資料
阿新 • • 發佈:2022-03-21
一、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 里加的話,會變成小寫。