Mybatis中返回Map的實現

在Mybatis中,我們通常會像下邊這樣用:

返回一個結果

User selectOne(User user);
<select id="selectOne" parameterType="cn.lyn4ever.entity.User" resultType="cn.lyn4ever.entity.User">
    select id,username,telphone from user where telphone=#{telphone} and password = #{password}
  </select>

返回多個結果(其實這個和上邊一樣,隻不過是查詢條件的控制而已)

List<User> selectList(User user);
<select id="selectOne" parameterType="cn.lyn4ever.entity.User" resultType="cn.lyn4ever.entity.User">
    select id,username,telphone from user
  </select>

我們隻要將上邊的resultType改為java.util.HashMap,這會有生成下邊這樣

Map selectList(User user);
<select id="selectOne" parameterType="cn.lyn4ever.entity.User" parameterType="cn.lyn4ever.entity.User"  resultType="java.util.HashMap">
    select id,username,telphone from user where telphone=#{telphone} and password = #{password}
  </select>

上這結果就是說,以User類的屬性名為key,屬性值為value。

當然,也可以查出來多條記錄,將這個Map放進List中

List<Map> selectList(User user);
<select id="selectOne" parameterType="cn.lyn4ever.entity.User" resultType="java.util.HashMap">
    select id,username,telphone from user
  </select>

但是有時候我們想要這種結果,怎麼辦呢?

{
 "01":{
 username:"zhangsan",
 telphone:"13000000000"
 }
}

也就是我們要自定義一個Map<String,User>,這樣的話,有以下兩種解決方法:

1.使用註解

@MapKey("id")
Map<String,User> getUserInMap();
<!--xml和之前寫法一樣-->
<select id="getUserInMap" parameterType="cn.lyn4ever.entity.User"  resultType="User">
  select id,username,telphone from user where telphone=#{telphone} and password = #{password}
</select>

這個@MapKey的value寫的就是User對象的一個屬性

2.在xml文件中寫上

HashMap<String,Object> getUserInMap();
<select id="getUserInMap" parameterType="cn.lyn4ever.entity.User"  resultType="java.util.HashMap">
SELECT id as 'key', * as 'value', id,username,telphone from user where telphone=#{telphone} and password = #{password}
</select>

當然以上這兩種方法,如果查出來是多條的話也會是List的形式

到此這篇關於Mybatis中返回Map的實現的文章就介紹到這瞭,更多相關Mybatis中返回Map內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: