老司机学习MyBatis之如何通过select返回Map

一、案例

当要查询的结果是一个Map的时候,这里分为两种情况:

①返回单条记录

<select id="getUserByIdReturnMap" resultType="map">
	select id, loginId, userName, role, note from t_user where id=#{id}
</select>

注意:此时的resultType写的是map

控制台打印结果如下:

2017-08-06 22:57:38,473 [main] [com.queen.mybatis.mapper.UserMapper.getUserByIdReturnMap]-[DEBUG] ==>  Preparing: select id, loginId, userName, role, note from t_user where id=? 
2017-08-06 22:57:38,538 [main] [com.queen.mybatis.mapper.UserMapper.getUserByIdReturnMap]-[DEBUG] ==> Parameters: 1(Integer)
2017-08-06 22:57:38,581 [main] [com.queen.mybatis.mapper.UserMapper.getUserByIdReturnMap]-[DEBUG] <==      Total: 1
{id=1, loginId=乌索普, role=海贼王副把手, userName=奎恩, note=专门负责提鞋的。。。}

从控制台可以看到,返回了一条数据,key是列名,值就是对应的值

②返回多条记录

要将每条记录都封装成Map,注意:这里的返回值resultType是User类型,而不是一个Map

<select id="getAllUsersReturnMap" resultType="com.queen.mybatis.bean.User">
	select id, loginId, userName, role, note from t_user
</select>

@MapKey(“id”)表示:告诉MyBatis封装这个Map的时候使用哪个属性作为map的key,修改Java文件

/**
* 多条记录封装成一个Map,Map<Integer,User>:键是这条记录的主键,值是这条记录封装后的JavaBean
* @param id
* @return
*/
@MapKey("id")
public Map<Integer,User> getAllUsersReturnMap();

控制台打印结果如下:

2017-08-06 23:11:20,001 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] ==>  Preparing: select id, loginId, userName, role, note from t_user 
2017-08-06 23:11:20,054 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] ==> Parameters: 
2017-08-06 23:11:20,102 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] <==      Total: 3
{1=User [id=1, loginId=queen, userName=奎恩, role=海贼王副把手, note=专门负责提鞋的。。。], 2=User [id=2, loginId=king, userName=金狮子, role=海贼王前大海贼把手, note=磁性果实能力], 3=User [id=3, loginId=Lucy, userName=路西, role=路飞假扮选手, note=打败多弗朗明哥。。。]}

从上述打印结果可以直观的看到,返回多条记录时,key是ID主键,value是一个User的JavaBean

为了验证上述@MapKey注解的作用,我们修改一下@MapKey(“userName”)

扫描二维码关注公众号,回复: 1631191 查看本文章
@MapKey("userName") public Map<Integer,User> getAllUsersReturnMap();

控制台打印结果如下:

2017-08-06 23:19:41,081 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] ==>  Preparing: select id, loginId, userName, role, note from t_user 
2017-08-06 23:19:41,136 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] ==> Parameters: 
2017-08-06 23:19:41,191 [main] [com.queen.mybatis.mapper.UserMapper.getAllUsersReturnMap]-[DEBUG] <==      Total: 3
{金狮子=User [id=2, loginId=king, userName=金狮子, role=海贼王前大海贼把手, note=磁性果实能力], 路西=User [id=3, loginId=Lucy, userName=路西, role=路飞假扮选手, note=打败多弗朗明哥。。。], 奎恩=User [id=1, loginId=queen, userName=奎恩, role=海贼王副把手, note=专门负责提鞋的。。。]}


=======欢迎大家拍砖,小手一抖,多多点赞哟!=======

版权声明:本文为博主原创文章,允许转载,但转载必须标明出处。


猜你喜欢

转载自blog.csdn.net/gaomb_1990/article/details/80638177