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







相关文章
|
15天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
17 0
|
1月前
|
Java 关系型数据库 数据库连接
MyBatis Plus 解决大数据量查询慢问题
MyBatis Plus 解决大数据量查询慢问题
|
3月前
|
SQL Java 数据库连接
Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式
【1月更文挑战第3天】 一、核心配置文件详解 二、默认的类型别名 三、MyBatis的增删改查 四、MyBatis获取参数值的两种方式 1、单个字面量类型的参数 2、多个字面量类型的参数 3、map集合类型的参数 4、实体类类型的参数 5、使用@Param标识参数
62 2
Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式
|
1月前
|
SQL Java 数据库连接
Mybatis查询的时候BigDecimal类型的值查询失效的解决办法
Mybatis查询的时候BigDecimal类型的值查询失效的解决办法
|
1月前
|
缓存 Java 数据库连接
MyBatis Plus的“幻查” 规范到底要怎样使用哪几个查询函数 为什么会出现幻查?还有幻删为什么会删不掉
MyBatis Plus的“幻查” 规范到底要怎样使用哪几个查询函数 为什么会出现幻查?还有幻删为什么会删不掉
|
1月前
|
SQL Java 关系型数据库
【MyBatis】3、一文介绍如何用 MyBatis 进行多表级联查询
【MyBatis】3、一文介绍如何用 MyBatis 进行多表级联查询
53 0
|
3月前
|
SQL Java 数据库连接
JAVAEE框架技术之9-myBatis高级查询技术文档
JAVAEE框架技术之9-myBatis高级查询技术文档
81 0
JAVAEE框架技术之9-myBatis高级查询技术文档
|
3月前
|
SQL Java 数据库连接
Mybatis之Mybatis的各种查询功能和特殊SQL的执行
【1月更文挑战第3天】 一、MyBatis的各种查询功能 1、查询一个实体类对象 2、查询一个List集合 3、查询单个数据 4、查询一条数据为map集合 5、查询多条数据为map集合 1、方法一 2、方法二 二、特殊SQL的执行 1、模糊查询 2、批量删除 3、动态设置表名 4、添加功能获取自增的主键
140 1
Mybatis之Mybatis的各种查询功能和特殊SQL的执行