在Mybatis中,我們通常會像下邊這樣用: 返回一個結果 返回多個結果(其實這個和上邊一樣,只不過是查詢條件的控制而已) 我們只要將上邊的 改為 ,這會有生成下邊這樣 上這結果就是說,以User類的屬性名為key,屬性值為value。 當然,也可以查出來多條記錄,將這個Map放進List中 但是有 ...
在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