使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常-阿里云开发者社区

开发者社区> 优惠券活动> 正文

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

简介: 使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常 问题描述 在使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常如下:org.
+关注继续查看

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

问题描述

  • 在使用mybatis对数据库执行更新操作时,parameterType为某个具体的bean,而bean中传入的参数为null时,抛出异常如下:
    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
        at 
    
  • 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
    原文地址http://www.bieryun.com/3176.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
mybatis 增删查改操作实践
1.mybatis-config.xml  中定义typeAliases设置别名的时候,必须在setting标签之后。 2.一些别名已经被mybatis预先定义好,如map->Map 一样,详细看书。
13707 0
【hibernate 执行方法未插入数据库】hibernate的save方法成功执行,但是未插入到数据库
今天做项目,碰上这个问题: hibernate的save方法成功执行,但是未插入到数据库。 Dao层代码: 1 @Override 2 public void save(T t) { 3 this.
853 0
C#使用SqlBulkCopy将DataTable写入数据库的表中(表不存在则创建新表,数据存在则更新,不存在则插入)
原文:.net使用SqlBulkCopy导入数据(创建新表) .net2.0后ado.net提供了一个快速导入sqlserver的方法sqlbulkcopy.导入效率非常高.  包装了一个简单的sqlbulkcopy类,用于数据从datatable导入到sqlserver.
2357 0
android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第二部分)
使用SQLiteOpenHelper对数据库进行版本管理 如果应用使用到了SQLite数据库,在用户初次使用软件时,需要创建应用使用到的数据库表结构及添加一些初始化记录,另外在软件升级的时候,也需要对数据表结构进行更新。
1161 0
使用iOS原生sqlite3框架对sqlite数据库进行操作(三)
使用iOS原生sqlite3框架对sqlite数据库进行操作
29 0
+关注
优惠券活动
阿里云优惠码阿里云推荐券bieryun.com
389
文章
9
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载