MyBatis 解决查询结果Map中,值为null,不存储键值的问题
博客专区 > muzi1994 的博客 > 博客详情
MyBatis 解决查询结果Map中,值为null,不存储键值的问题
muzi1994 发表于1年前
MyBatis 解决查询结果Map中,值为null,不存储键值的问题
  • 发表于 1年前
  • 阅读 267
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

在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}

 

标签: MyBatis
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
muzi1994
粉丝 4
博文 67
码字总数 30004
×
muzi1994
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: