时间:2021-05-19
现在有一张user表
id ,name,age
我们进行一个简单的查询:
<select id="test" resultType="Uer"> select id ,name,age from user</select>查询完后,怎么去接收这个查询结果呢,通常在这个mapper.xml对应的接口中使用List<User>做为返回值去接收,最后存储的样子就是下面的图
这是一个很简单的单表查询操作,其实这种简单的单表查询操作不需要引入User类,直接使用resultType="hashmap",接口中使用List<Object>做为返回值去接(hashmap也是对象的一种所以可以直接使用Obeject),让查询结果自动封装成Map对象存入list中也可以返回
<select id="test" resultType="hashmap"> select id ,name,age from user</select>当使用hashmap作为返回值类型时,Mybatis会自动将字段名作为key值,将对应的字段值作为value封装到map中,一条记录有多个字段,产生多个key-value键值对存到一个map对象中,多条记录就会生成多个map对象,多个map对象存到list中返回
注意:如果字段对应的值为空,那么在封装map的时候,这个字段会直接被忽略调。
补充知识:resultType="java.util.HashMap" sql返回的null值,不在map里面
问:
mapper配置如下
<select id="query_user_info_by_list" resultType="java.util.HashMap"> select id,name,nickname,status from user order by create_time desc</select>name, nickname 有的是null
这样导致,查询出来的map,本来map.size=4的
但是,如果查询出来的name为null,那么返回的hashmap里面就没有name了
同样,nickname也是一样,请问,如何解决这个问题
我不想在sql里面用nvl函数去做
答:
<settings> <setting name="callSettersOnNulls" value="true"/></settings>把这个加到你的mybatis-config.xml里。
以上这篇浅谈Mybatis中resultType为hashmap的情况就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的(对应
mybatis通常情况都是用javabean作为resultType的对象,但是有时也可以使用Map去接收。${value}如果使用Map,返回来的字段名全是大
MyBatis3.X复杂Sql查询MyBatis3.X的resultMap1.Mybatis的sql语句返回的结果有两种resultType查询出的字段在相应的
在使用mybatis的过程中会遇到只返回单独数据类型的问题会用到resultType。//返回IntegerSELECTspeedfromdws_tfc_sta
在使用Mybatis时,有的时候我们可以不用定义resultMap,而是直接在语句上指定resultType。这个时候其实就用到了Mybatis的结果集自动映射