MyBatis在字段返回为null不返回字段

2023-11-12

 原文地址:http://blog.csdn.net/zkd12344/article/details/53261253

参考地址:http://www.360doc.com/content/15/0608/08/281812_476469535.shtml

在用mybatis时没有用实体作为返回(用的是Map) 因此出现了 在返回参数为null的时候 不会返回字段,出现情况:在移动端get一个空的字段就会报NullPointerException;
解决方案:在mybatis-config.xml中配置

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


 Mybatis resultMap空值映射问题解决
Mybatis在使用resultMap来映射查询结果中的列,如果查询结果中包含空值的列(不是null),则Mybatis在映射的时候,不会映射这个字段,例如 查询 name,sex,age,数据库中的age字段没有值,Mybatis返回的map中只映射了 name和sex字段,而age字段则没有包含。

那么如何将age字段映射到map中呢。提供两种解决方法:

使用Mybatis config配置

创建configuration.xml

	
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL MAP Config 3.1//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <settings>
      <setting name="callSettersOnNulls" value="true"/>
  </settings>
</configuration>

配置Mybatis的SqlSessionFactoryBean

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:/META-INF/spring/configuration.xml" />
    <property name="mapperLocations"
    value="classpath:/META-INF/spring/mybatis/modelMap/*.xml" />
</bean>

在这种配置中,age将以null值映射到map中。

如果想要配置age的默认值,则可以建立一个类,实现Mybatis的TypeHandler接口
	
public class EmptyStringIfNull implements TypeHandler<String> {
    @Override
    public String getResult(ResultSet rs, String columnName) throws SQLException {
     return (rs.getString(columnName) == null) ? "" : rs.getString(columnName);
    }
    @Override
    public String getResult(ResultSet rs, int columnIndex) throws SQLException {
     return (rs.getString(columnIndex) == null) ? "" : rs.getString(columnIndex);
    }
    @Override
    public String getResult(CallableStatement cs, int columnIndex)   throws SQLException {
     return (cs.getString(columnIndex) == null) ? "" : cs.getString(columnIndex);
    }
    @Override
    public void setParameter(PreparedStatement ps, int arg1, String str, JdbcType jdbcType) <span style="line-height:1.5;font-size:9pt;">throws SQLException {</span><span style="line-height:1.5;font-size:9pt;"> }</span><span style="line-height:1.5;font-size:9pt;">}</span>

继续在resultMap中使用,即可配置age的默认值(上述代码中age的默认值为"")

<resultMap id="list" type="java.util.LinkedHashMap">
    <result property="name" column="name" />
    <result property="sex" column="sex" />
    <result property="age" column="age" typeHandler="com.demo.EmptyStringIfNull"/>
</resultMap>

网上有些资料中提到可以使用 defaultValue 和 nullValue的配置,但是这中配置是ibatis的用法,在Mybatis中已经移除。




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MyBatis在字段返回为null不返回字段 的相关文章

  • Reactive Spring 不支持 HttpServletRequest 作为 REST 端点中的参数?

    我创建了一个 RestController 如下所示 RestController public class GreetingController RequestMapping value greetings method RequestM
  • FileNotFoundException - Struts2 文件上传

    Strange FileNotFoundException使用Struts2上传文件时 这是 JSP 的一部分
  • 为自定义驱动程序创建 GraphicsDevice

    我正在开发一个在嵌入式系统中使用 Java 的项目 我有用于屏幕和触摸输入的驱动程序 以及用于文本输入的虚拟键盘 我的屏幕驱动程序有一个Graphics2D您可以绘制的对象和repaint Rectangle 更新方法 类似地 触摸驱动器能
  • Spring数据中的本机查询连接

    我有课 Entity public class User Id Long id String name ManyToMany List
  • 为什么Iterator接口没有add方法

    In IteratorSun 添加了remove 方法来删 除集合中最后访问的元素 为什么没有add方法来向集合中添加新元素 它可能对集合或迭代器产生什么样的副作用 好的 我们开始吧 设计常见问题解答中明确给出了答案 为什么不提供 Iter
  • Java中的断点和逐步调试?

    抱歉我的问题名称很奇怪 我不知道如何寻找这个 因为我不知道这些东西是如何称呼的 Visual Studio 中至少有一个功能 您可以单击代码左侧并设置一个大红点的起点 然后运行程序 您可以通过按 f8 或 f5 实际上是不同的 f 来跟踪步
  • 如何使用正则表达式验证 1-99 范围?

    我需要验证一些用户输入 以确保输入的数字在 1 99 范围内 含 这些必须是整数 Integer 值 允许前面加 0 但可选 有效值 1 01 10 99 09 无效值 0 007 100 10 5 010 到目前为止 我已经制定了以下正则
  • 如何通过注解用try-catch包装方法?

    如果应该在方法调用中忽略异常 则可以编写以下内容 public void addEntryIfPresent String key Dto dto try Map
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • MySQL 两种日期格式之间的转换

    用户将以这种格式输入日期 2017 年 2 月 17 日 存储在 mysql 数据库中的日期格式如下 2015 02 17 00 00 00 我想做的是 SELECT FROM insurance where DATE FORMAT in
  • Java、Spring:使用 Mockito 测试 DAO 的 DataAccessException

    我正在尝试增加测试覆盖率 所以我想知道 您将如何测试 DAO 中抛出的 DataAccessExceptions 例如在一个简单的 findAll 方法中 该方法仅返回数据源中的所有数据 就我而言 我使用 Spring JdbcTempla
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • 无法在 Java/Apache HttpClient 中处理带有垂直/管道栏的 url

    例如 如果我想处理这个网址 post new HttpPost http testurl com lists lprocess action LoadList 401814 1 Java Apache 不允许我这么做 因为它说竖线 是非法的
  • Java - 从 XML 文件读取注释

    我必须从 XML 文件中提取注释 我找不到使用 JDOM 或其他东西来让它们使用的方法 目前我使用 Regex 和 FileReader 但我不认为这是正确的方法 您可以使用 JDOM 之类的东西从 XML 文件中获取注释吗 或者它仅限于元
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • parent_id 是外键(自引用)并且为 null?

    浏览 Bill Karwin 的书 SQL Antipatterns 第 3 章 Naive Trees 邻接表 父子关系 有一个注释表的示例 CREATE TABLE Comments comment id SERIAL PRIMARY
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

    假如说arraylist定义为ArrayList
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu

随机推荐

  • Python内置函数(47)——open

    英文文档 open file mode r buffering 1 encoding None errors None newline None closefd True opener None Open file and return a
  • VB 正则表达式(RegExp)对象

    VB 正则表达式 RegExp 对象 正则表达式 RegExp 对象提供简单的正则表达式支持功能 说明下面的代码说明了RegExp对象的用法 Function RegExpTest patrn strng Dim regEx Match M
  • Docker swarm 搭建docker高可用集群

    目录 项目名称 基于docker swarm 搭建docker高可用集群 1 网络拓扑图 网络数据流图 2 项目环境 3 项目描述 4 项目步骤 1 规划设计整个集群的架构 网络拓扑 安装7台CentOS 7 6的系统 按照规划配置好每台l
  • rs232转usb驱动_世界上最小的伺服驱动器。

    PEAR 世界上最小的伺服驱动器 用于有刷和无刷电机的微型嵌入式控制器 8 40 Vdc单电源 3 A连续 6 A峰值 CANOpen DS402 DS301 RS232和USB配置 数字霍尔 单端编码器 2x通用输入 1x数字输出尺寸 2
  • dw1000 配置无法通过

    最近在使用DW1000 做UWB项目时 出现过一个问题 配置DW1000一直无法成功 奇怪 之前还好好的 一点点排查确认了SPI配置没有问题 速度也不会太高 最后发现是重新配置工程时错将DW1000的RESET引脚配成输出引脚 把它改回输入
  • TCP的三次握手,四次挥手,面试必会

    目录 一 TCP三次握手 建立连接 二 TCP三次握手细节 三 TCP 四次挥手 断开连接 四 TCP非常重要的协议 一 TCP三次握手 建立连接 握手 单纯就是发一个打招呼的数据 不携带业务信息 那么为什么叫三次握手呢 因为B的中间两次可
  • C++ map的基本操作和使用

    C map的基本操作和使用 1 map简介 map是一类关联式容器 它的特点是增加和删除节点对迭代器的影响很小 除了那个操作节点 对其他的节点都没有什么影响 对于迭代器来说 可以修改实值 而不能修改key 2 map的功能 自动建立Key
  • 【TypeScript】TypeScript中的泛型

    泛型的意义及语法 定义一个函数或类时 有些情况下无法确定其中要使用的具体类型 返回值 参数 属性的类型不能确定 此时泛型便能够发挥作用 举个例子 function test arg any any return arg 上例中 test函数
  • 红队内网渗透神器--CobaltStrike安装教程

    CobaltStrike介绍 CobaltStrike是一款渗透测试神器 被业界人称为CS神器 CobaltStrike分为客户端与服务端 服务端是一个 客户端可以有多个 可被团队进行分布式协团操作 CobaltStrike集成了端口转发
  • 【VS问题已解决】警告被视为错误 - 没有生成“object”文件

    VS问题已解决 警告被视为错误 没有生成 object 文件 目前遇到这个问题主要是因为代码存在不明显的语法错误 在VS生成解决方案的编译阶段之前会检查有没有明显的语法问题 首先是 例如缺少结尾分号 误用中文字符这种最明显问题 在运行之前就
  • 网络协议笔记-网络层-划分子网、IP数据报的分组转发

    1 子网及子网掩码 1 1 为什么划分子网 简单点说 就是IP地址不够用了 互联网的发展太快 IP地址不够分了 两级IP地址的设计不太合理 因为随着网络的增多路由表会变得巨大 书上的总结是这样的 IP地址空间的利用率有时很低 例如A类地址网
  • 使用Python将图片转pdf

    使用Python将图片转pdf 1 效果图 2 源码 参考 今天需要把图片转pdf 发现迅捷pdf转换开始默认带水印了 收费版那算了 那就用Python吧 可单转 可批量转 参考 https blog csdn net qq 5370609
  • AI笔记: 数学基础之正交矩阵与矩阵的QR分解

    正交矩阵 若n阶方阵A满足 A T A E A TA E ATA E 则称A为正交矩阵 简称正交阵 复数域上称为酉矩
  • Vue 框架

    Vue 简介 Vue 是一套用于构建用户界面的渐进式框架 Vue 的核心库只关注视图层 不仅易于上手 还便于与第三方库或既有项目整合 另一方面 当与现代化的工具链以及各种支持类库结合使用时 Vue 也完全能够为复杂的单页应用提供驱动 官方文
  • 家用NAS——6大神奇体验供你享

    NAS这个 网络存储器 它能一站式为你解决有关存储的问题 家用NAS的这6大神奇的体验 不用不知道 用了才知道它的妙 一 强大的手机相册管理软件 市面上很多NAS都配备了相册APP管理软件 通过手机APP 可以将手机内的照片直接备份到NAS
  • Docker介绍

    Docker介绍 Docker 扩展了Linux 容器 Linux Containers 或着说 LXC 通过一个高层次的 API为进程单独提供了一个轻量级的虚拟环境 Docker利用了 LXC cgroups 和Linux 自己的内核 和
  • 通过JS监听input输入框的值来判断手机号

  • 多项式分布的理解概率公式的理解

    多项式分布是二项分布的推广 二项分布 也叫伯努利分布 的典型例子是扔硬币 硬币正面朝上概率为p 重复扔n次硬币 k次为正面的概率即为一个二项分布概率 而多项分布就像扔骰子 有6个面对应6个不同的点数 二项分布时事件X只有2种取值 而多项分布
  • stable diffusion实践操作-安装

    本文专门开一节写安装相关的内容 在看之前 可以同步关注 stable diffusion实践操作 正文 1 秋葉一键安装包 github安装 https github com AUTOMATIC1111 stable diffusion w
  • MyBatis在字段返回为null不返回字段

    原文地址 http blog csdn net zkd12344 article details 53261253 参考地址 http www 360doc com content 15 0608 08 281812 476469535 s