文档章节

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

muzi1994
 muzi1994
发布于 2017/02/14 10:12
字数 313
阅读 309
收藏 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
博文 112
码字总数 31619
作品 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 resultMap空值映射问题解决

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

last
2015/02/02
20.2K
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 和 resultType 区别

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

黑曼巴hy
04/11
0
0
Mybatis--resultType和resultMap

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

北京_
2014/08/27
0
1

没有更多内容

加载失败,请刷新页面

加载更多

RedHat已更改其开源许可规则

对于编程圈外的人来说,软件许可证似乎并不重要,但是,在开源领域,开源许可是非常重要的。 因此,领先的Linux公司Red Hat宣布了一件大事,所有新的由Red Hat发起的使用GNU通用公共许可证(...

linux-tao
13分钟前
3
0
游戏化策划的反馈机制

简评:如何低成本地设计游戏化活动运营方案 当项目活动组采用游戏化机制来设计活动时,往往会犯一个错误 —— 以为物质奖励(金钱或实物)就是终极奖励。然后一次又一次的证据显示,有形奖励...

极光推送
15分钟前
1
0
PHP "延迟静态绑定" 功能,static

从这个名字的定义提取出两个关键点,第一点静态,也就是说这个功能只适用于静态属性或静态方法。 第二点延迟绑定,这个根据下面代码就可以很好的理解 class A{ static $name = "Tom";...

nsns
19分钟前
1
0
《看图轻松理解数据结构与算法系列》导引贴

最近学习数据结构,遇到一个很喜欢的博主,他的文章图文并茂,理解起来很容易。特此开贴记录,方便反复阅读。 博主主页 https://juejin.im/user/57c3970f79bc440063e58518/posts?sort=popul...

科陆李明
56分钟前
1
0
20.27 分发系统介绍~ 20.30 expect脚本传递参数

分发系统介绍分发系统-expect讲解(也就是一个分发的脚本)场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者lnmp,最好还需要吧代码上传到服务器上;但是因...

洗香香
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部