浅谈Mybatis中resultType为hashmap的情况
现在有一张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的情况就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
mybatis查询实现返回List<Map>类型数据操作
如下所示: **只要设定resultType而不设定resultMap就可以了**: < select id = "selectByPage" parameterType = "java.util.Map" resultType="java.util.Map" > select rs.*, rssetting.*, cp.STOCK_CODE, cp.UNAME from RS rs left join T_COMPANY cp on
-
mybatis多层嵌套resultMap及返回自定义参数详解
1.两层嵌套,一个list中加另外一个list data:[ {a:123,b:456,c:[{d:7,e:8}]} ] xml文件定义的sql select * from zhy z LEFT JOIN wl w on z.id = w.zid resultMap可以定义: <resultMap id="zhyResultMap" type="zhy的doman实体" extends="zhy自动生成的BaseResultMap">
-
MyBatis查询结果resultType返回值类型的说明
一.返回一般数据类型 比如要根据 id 属性获得数据库中的某个字段值. mapper 接口: // 根据 id 获得数据库中的 username 字段的值 String getEmpNameById(Integer id); SQL 映射文件: <!-- 指定 resultType 返回值类型时 String 类型的, string 在这里是一个别名,代表的是 java.lang.String 对于引用数据类型,都是将大写字母转小写,比如 HashMap 对应的别名是 'hashmap' 基本数
-
浅谈Mybatis中resultType为hashmap的情况
现在有一张user表 id ,name,age 我们进行一个简单的查询: <select id="test" resultType="Uer"> select id ,name,age from user </select> 查询完后,怎么去接收这个查询结果呢,通常在这个mapper.xml对应的接口中使用List<User>做为返回值去接收,最后存储的样子就是下面的图 这是一个很简单的单表查询操作,其实这种简单的单表查询操作不需
-
浅谈myBatis中的插件机制
插件的配置与使用 在mybatis-config.xml配置文件中配置plugin结点,比如配置一个自定义的日志插件LogInterceptor和一个开源的分页插件PageInterceptor: <plugins> <plugin interceptor="com.crx.plugindemo.LogInterceptor"></plugin> <plugin interceptor="com.github.pagehelper.P
-
浅谈mybatis中的#和$的区别 以及防止sql注入的方法
mybatis中的#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中.如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的
-
浅谈mybatis中的#和$的区别
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中.如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为ord
-
浅谈mybatis中SQL语句给boolean类型赋值问题
我就废话不多说了,大家还是直接看代码吧~ <select id="getBiTree" parameterType="String" resultMap="MenuVoListMap"> SELECT m.menu_id , m.parent_id , m.`name` , 1 opens FROM menu m WHERE m.is_valid = 1 AND (m.type = 0 or m.type = 1) and m.men
-
浅谈MyBatis中@MapKey的妙用
目录 MyBatis @MapKey的妙用 背景 实现 源码分析 思考 Mybatis @MapKey分析 1. MapKey注解有啥功能 2. MapKey的源码分析 1. MapperMethod对MapKey的操作 2. DefaultMapResultHandler是什么 MyBatis @MapKey的妙用 背景 在实际开发中,有一些场景需要我们返回主键或者唯一键为Key.Entity为Value的Map集合,如Map<Long, User>,之后我们就可以直接通过map.get(k
-
浅谈mybatis mapper.xml文件中$和#的区别
#{}表示一个占位符即?,可以有效防止sql注入.在使用时不需要关心参数值的类型,mybatis会自动进行java类型和jdbc类型的转换. #{}可以接收简单类型值或pojo属性值,如果传入简单类型值,#{}括号中可以是任意名称. <!-- 根据名称模糊查询用户信息 --> <select id="findUserById" parameterType="String" resultType="user"> select
-
浅谈java中HashMap键的比较方式
先看一个例子 Integer integer=12344; Integer integer1=12344; 在Java中Integer 和Integer1是不相等的,但是如果再执行如下语句 map.put(integer, 1); map.put(integer1, 2); 会发现2会把1覆盖,问题来了,明明是两个不同的对象,为什么,2会把1覆盖呢? 我们看HashMap中添加键的源代码,如下 可以发现我们传进来的键交给了一个hash的成员方法区处理,这里我们看看hash方法的源码 哦,看到这里
-
浅谈MyBatis 如何执行一条 SQL语句
前言 Mybatis 是 Java 开发中比较常用的 ORM 框架.在日常工作中,我们都是直接通过 Spring Boot 自动配置,并直接使用,但是却不知道 Mybatis 是如何执行一条 SQL 语句的,而这篇文章就是来揭开 Mybatis 的神秘面纱. 基础组件 我们要理解 Mybatis 的执行过程,就必须先了解 Mybatis 中都有哪一些重要的类,这些类的职责都是什么? SqlSession 我们都很熟悉,它对外提供用户和数据库之间交互需要使用的方法,隐藏了底层的细节.它默认是实现类
-
浅谈Mybatis获取参数值的方式
目录 一. Mybatis获取参数值的各种情况 1.mapper接口方法的参数为单个字面量的类型 2.mapper接口方法的参数有多个 3.手动把参数放在map集合中 4.mapper接口方法的参数是实体类型的参数 5.通过@Param注解命名参数(比较常用) 二.总结 三.Param源码分析 Mybatis获取参数值的两种方式:${},#{} ${}本质:字符串拼接,注意:单引号要加上 #{}:本质:占位符赋值 一. Mybatis获取参数值的各种情况 1.mapper接口方法的参数为单个字面
随机推荐
- Vue.js每天必学之过滤器与自定义过滤器
- MVC+jQuery.Ajax异步实现增删改查和分页
- PHP.MVC的模板标签系统(二)
- php校验表单检测字段是否为空的方法
- PHP构造二叉树算法示例
- 那些年,我还在学习C# 学习笔记
- Docker 实现浏览器里开发Android应用的功能
- 单击按钮显示隐藏子菜单经典案例
- JavaScript实现打印星型金字塔功能实例分析
- DIV+CSS 简单的导航条
- JavaScript 学习笔记(六)
- sqlserver 数据类型转换小实验
- mysql命令行还原phpMyAdmin导出的含有中文的SQL文件
- jquery 提交值不为空的元素示例代码
- 通过javascript获取iframe里的值示例代码
- JS中如何实现Laravel的route函数详解
- 简单实现android轮播图
- Java正则表达式的语法及示例解析
- intel原装主版没有驱动的查找技巧
- 提示出现unresolved external symbol _main的解决方法