MyBatis查询语句返回结果类型为HashMap

假设有一张表为test

create table test(

   id number,

   name varchar2(80),

   age number

);

查询语句是这样的

<select id="getById" parameterType="string" resultType="hashmap">

   select name, age from test where id = #{id}

</select>

Mapper文件定义如下:

public List<HashMap<String, String>> getById(String id);


假设返回一条记录

第一种情况

   其name字段值为NULL,age字段不为NULL,那么程序接收到的List是这样的:List[{AGE=20}],List的长度为1,这里由于这条记录的name字段为NULL,不被映射。

第二种情况

   name和age字段都为NULL,那么返回的List是这样的:List[null],但是List的长度仍然为1,因为查询到一条记录,只不过这条记录的name和age字段为NULL,由于NULL是不被映射的,既然两个字段都为NULL,于是这个HashMap便为null


   实验结果表明,MyBatis查询语句中,当返回结果类型为HashMap时,若该记录的所有字段值都为NULL,那么该记录映射的HashMap为null;若该记录的所有字段值不全为NULL,那么为NULL的字段将不被映射到HashMap中,不为空的字段将会被映射到HashMap中,并且字段名称为key,字段值为value。


补充:oracle中空字符串就是NULL,而NULL在是不被映射到HashMap中的,所有不会出现这样的List([{NAME=}])




本文转自    手不要乱摸      51CTO博客,原文链接:http://blog.51cto.com/5880861/1394591







  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值