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的形式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM