问题描述: 在使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常如下:_CODE男孩的博客-程序员宝宝

技术标签: myBatis  

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property=‘pxh‘, mode=IN, javaType=class java.lang.Long, jdbcType=null, numericScale=null, resultMapId=‘null‘, jdbcTypeName=‘null‘, expression=‘null‘}. Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #5 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111

问题描述:

在使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常如上:




mapper文件中代码如下:

<update id="update" parameterType="com.hsoft.mss.xtgl.model.Bean">
        update table
        <set>
                pxh  = #{pxh},    // 当pxh传入null时,抛出上述异常,pxh在bean中的类型为Long
                time = sysdate
        </set>
        where id = #{id}
</update>

 

解决办法一:

经过对代码分析,是由于未指定传入参数pxh的类型,当mybatis接收到null时,无法将其正确的进行解析,进而导致上述异常。

将mapper中代码修改如下:

<update id="update" parameterType="com.hsoft.mss.xtgl.model.Bean">
        update table
        <set>
                pxh  = #{pxh,jdbcType=NUMERIC}, //将pxh的类型指定为NUMERIC即可
                time = sysdate
        </set>
        where id = #{id,jdbcType=VARCHAR}
</update>

解决办法二:

在配置文件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>
        <setting name="jdbcTypeForNull" value="NULL" />
    </settings>
       ... 
</configuration>

 

这样,即使传入参数为null,mybatis也能够将其转换成正确的数据类型,并进行存储操作。

 

附:常见的Jdbc Type 与 Java Type之间的关系

JDBC Type            Java Type  
CHAR                 String  
VARCHAR              String  
LONGVARCHAR          String  
NUMERIC              java.math.BigDecimal  
DECIMAL              java.math.BigDecimal  
BIT                  boolean  
BOOLEAN              boolean  
TINYINT              byte  
SMALLINT             short  
INTEGER              int  
BIGINT               long  
REAL                 float  
FLOAT                double  
DOUBLE               double  
BINARY               byte[]  
VARBINARY            byte[]  
LONGVARBINARY        byte[]  
DATE                 java.sql.Date  
TIME                 java.sql.Time  
TIMESTAMP            java.sql.Timestamp  
CLOB                 Clob  
BLOB                 Blob  
ARRAY                Array
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_24084925/article/details/53535568

智能推荐

我的家庭私有云计划-1_weixin_33728268的博客-程序员宝宝

 首先啊,我先自我招供,起这个名字有点标题党的意思,呵呵,从天涯上学到的一个词,嗯,抓抓眼球嘛。大家莫怪。其次呢,我是研究云计算和高性能后台数据服务器的,脑子里面还真想拥有自己的一个“云”。细心读者可能看见了,本文后面有个1,表示这是一篇较长的文章,我可能会一点点写,写成连续剧,逐渐写完整。想看的话,请耐心点。本文论述了从去年下半年开始,我脑子里面构思的一个实验性计划,这个计划目前已经...

Nginx(1.14.0)负载均衡+Tomcat(8.0)集群搭建_克莱因S的博客-程序员宝宝

Nginx历史(闲扯几句,可略过!!!)Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。Nginx是一款轻量级的Web 服务器/反...

PyObject_CallObject, PyObject_Call, PyObject_CallFunction使用例子_隨意的風的博客-程序员宝宝_pyobject_callobject

Examplestatic PyObject *g_callbackFunc = NULL;/** @Desp : Get the val from JSON data string by key* @in : char *buffer, char *key* @out : char* value* @ret : NULL* @example for buffer val...

Windows编程——网络概念(一):网络分层_卢然小子的博客-程序员宝宝

PS:这些文字是参考的UNP写的,但是网络分层的原理都是一样的,并且懒得专门去写一个关于Windows的了,所以就这样~~网络分层网络是分层的,程序员关心的是以下4层:以太网层:帧,frameIP层:分组,packageTCP:节,segment应用层:消息,message在谈论网络数据的时候,如果说到帧,则应该知道是以太网层。我们一般关心的是TCP——分节,应用层——消息。TCP/IP协议不仅仅指的是TCP协议和IP协议,它泛指那些为应用层提供服务的网络协议。其中典型的TCP

计算机强势专业大学,计算机专业实力最强的6所大学,认可度高,竞争优势大,值得选择..._爱吃糖的苏苏雅的博客-程序员宝宝

计算机专业实力最强的6所大学,认可度高,竞争优势大,值得选择!现在说起热门专业,计算机绝对是占据了很重要的地位,很多同学也时看重了这一点,在以后的未来发展前景计算机一定会越走越高,薪资福利待遇也是水涨船高,所以也是积极的报考了其中相应的专业。对于计算机本身来说,就业的的方向是有很多种的,加之还在不断的优化,所以对这方面的人才还是比较紧缺的,而且报考计算机专业本身的发展前景就很好,但是在这么多的好处...

随便推点

深度学习-常用激活函数详细介绍_AI研习图书馆的博客-程序员宝宝_深度学习常用激活函数

本文主要介绍深度学习常用激活函数,介绍了sigmoid激活函数,tanh激活函数,relu激活函数等

多传感器融合课程笔记------信息融合_Tianchao龙虾的博客-程序员宝宝

多传感器融合之信息融合一、多传感器融合的优点冗余性:多个传感器数据对目标的描述表示是相同的(如激光雷达检测的目标信息和摄像头目标信息大体一致,允许有一定的属性误差);互补性:由于每个传感器的探测范围和探测属性不同,传感器之间的目标属性可以相互补充( 如前方障碍物的颜色信息, 激光雷达识别不出来);合作性:不同传感器在处理信息时会对其他信息有所依赖(如相机在建立位姿关系时,需要依赖IMU的数据);信息分层:可以根据数据融合所呈现的位置,进行分层,包括原始数据层(简称像元层)、特征层、 决策层(也叫

递归解决最长公共子序列问题(LCS)_zzzmj_的博客-程序员宝宝_递归求最长公共子序列

 前言写在前面,这篇文章是我大一的时候写的,质量比较差,没想到还是被挺多人看到了,有上千的阅读量,说实话有点内疚~~,因为之前写的太差了,看了我文章可能对这个问题更不清楚了。抱着不能坑别人的想法,我重新编辑了一下文章,希望还是能帮到大家的。其实用递归解决最长公共子序列是不好的,网上最多的方法应该是用动态规划解这个问题,动态规划解这个问题确实优秀很多,但动态规划理解起来是有难度的,我建...

VUE表格编辑单元格_Winhye的博客-程序员宝宝_vue表格编辑

1、需求:点击操作栏的“修改按钮”,使占用金额栏下单元格进入可编辑状态,并进行金额校验。2、页面表格以及欲编辑单元格增加如下代码。3、页面内操作栏增加修改编辑按钮。4、页面data中增加如下变量。5、方法中增加如下。...

Jmeter安装及使用案列_kunzai6的博客-程序员宝宝

一.安装Jmeter1:首先需要安装java-jdk,这个比较简单,最新的Jmeter需要1.8以上的java-jdk版本。2:下载:https://jmeter.apache.org/download_jmeter.cgiwin系统下载zip,linux下载tgz版本即可。3:加压到电脑目录,双击apache-jmeter-4.0\bin\jmeter.bat,在linux系统中运行jmeter...

Portal研究_wu6660563的博客-程序员宝宝

PortalPortal说明一个portal应用可通过复杂的个性化配置用户提供定制的内容,而portal页面就是含有不同的portlet为不同的用户生成内容portlet容器portlet容器运行portlet,并为portlet提供必要的运行环境开源portal对比Jetspeed (2.1.3) Jetspeed/Tomcat/MySQL 好像性能不错,不过文档不太好,接口粗糙不友好

推荐文章

热门文章

相关标签