文档章节

MyBatis 解决查询结果Map中,值为null,不存储键值的问题

muzi1994
 muzi1994
发布于 2017/02/14 10:12
字数 313
阅读 330
收藏 0

在MyBatis中,查询结果resultMap返回的是实体类,实体类中则处理值为null的结果。

如:

public void setNickname(String nickname) {
   this.nickname = nickname == null ? null : nickname.trim();
}

但是当返回结果为自定义resultMap时,就会出现,以下情况:

如:

自定义map

<resultMap type="java.util.Map" id="userLoginInfo" >

  <result column="uuid" property="id" />

  <result column="uuid2" property="uuid" />

  <result column="account" property="phone" />

  <result column="login_time" property="loginTime" />

  <result column="token" property="token" />

  <result column="data_progress" property="dataProgress" />

  <result column="account_locked" property="accountLocked" />

  <result column="is_delete" property="isDelete" />

  <result column="nickname" property="nickname" />

  <result column="user_head" property="userHead" />

</resultMap>

返回结果:

{accountLocked=false, loginTime=1480559610977, phone=18301413850, isDelete=false, dataProgress=0, nickname=, id=93cd68fcb95043febd28d6ad86666029, uuid=544dc45953e2dcc60e23ecccc52c578b, token=WT1Kgx}

发现返回结果Map中没有 user_head字段,原来 user_head在数据库中值为null,所以说数据库中所有值为null的字段,在查询接收resultMap时都不存在

解决方法:

1、在Mybatis_config.xml文件中添加配置信息

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration

  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

  "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

  <settings>

  <!--解决,查询返回结果含null,没有对应字段值问题-->

  <setting name="callSettersOnNulls" value="true"/>

  </settings>

</configuration>

经测试,值为null的结果在map中存在

测试结果:

{accountLocked=false, loginTime=1480559610977, userHead=null, phone=18301413850, isDelete=false, dataProgress=0, nickname=, id=93cd68fcb95043febd28d6ad86666029, uuid=544dc45953e2dcc60e23ecccc52c578b, token=WT1Kgx}

 

© 著作权归作者所有

共有 人打赏支持
muzi1994

muzi1994

粉丝 4
博文 117
码字总数 31741
作品 0
朝阳
私信 提问
深入了解MyBatis参数

深入了解MyBatis参数 相信很多人可能都遇到过下面这些异常: "Parameter 'xxx' not found. Available parameters are [...]" "Could not get property 'xxx' from xxxClass. Cause: "The exp......

Liuzh_533
2015/03/02
0
10
MyBatis返回类型resultType和resultMap

MyBatis的返回参数类型分两种 1. 对应的分类为: 1.1.resultMap: 1.2.resultType: 2 .对应返回值类型: 2.1.resultMap:结果集 2.2.resultType:int,string ,long ,class 3. 注意点: 在MyBat...

晨曦艾伯特
01/11
0
0
Mybatis resultMap空值映射问题解决

Mybatis在使用resultMap来映射查询结果中的列,如果查询结果中包含空值的列(不是null),则Mybatis在映射的时候,不会映射这个字段,例如 查询 name,sex,age,数据库中的age字段没有值,Myb...

last
2015/02/02
27.4K
11
Mybatis ResultMap 和 resultType 区别

一、概述 MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟...

黑曼巴hy
04/11
0
0
Java 学习(18)--列表(List)/ 集合 (Set)/ 泛型 / Map

List 列表 (1) List 是 Collection 的子接口 特点:有序 (存储顺序和取出顺序一致 ),可重复。 (2) List 的特有功能: A:添加功能 void add(int index,Object element) :在指定位置添加元素B...

姜白告
07/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TiQuery:All Diagnosis in SQL | TiDB Hackathon 优秀项目分享

本文作者是来自 TiNiuB 队的黄梦龙同学,他们的项目 TiQuery 在本届 TiDB Hackathon 2018 中获得了三等奖。 TiQuery 可以搜集诊断集群问题所需要的信息,包括集群拓扑,Region 分布,配置,各...

TiDB
9分钟前
2
0
git 分支创建合并流程图

gentlelions
17分钟前
2
0
Kali Linux常用服务配置教程DHCP服务原理

Kali Linux常用服务配置教程DHCP服务原理 动态主机配置协议(Dynamic Host Configuration Protocol,简称DHCP)是一个局域网的网络协议,基于UDP协议工作。它主要有两个用途:第一,给内部网...

大学霸
18分钟前
1
0
控制台打印图片

function dev(){ if (window.console){ console.log("%c\n ", "font-size:100px;background:url('http://gmcyzs.com/resources/images/logo.png') no-repeat"); console.log('%c 深务平台,\......

羊皮卷
26分钟前
0
0
MyBaties的二级缓存

二级缓存介绍 在上文中提到的一级缓存中,其最大的共享范围就是一个SqlSession内部,那么如何让多个SqlSession之间也可以共享缓存呢,答案是二级缓存。 当开启二级缓存后,会使用CachingExec...

嘴角轻扬30
26分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部