zoukankan      html  css  js  c++  java
  • Mybatis:使用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=’khzx’, 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 #2 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111

    mapper中代码如下所示:
    <insert id="save" parameterType="Khjlmx">
    insert into TXS_LHKH_KHJLMX(id,khjl,khzx,khnr,trnr)
    values(fnextid(‘TXS_LHKH_KHJLMX’),#{khjl},#{khzx},#{khnr},#{trnr})
    </insert>
    解决办法一:

    经过对代码分析,是由于未指定传入参数khjl的类型,当mybatis接收到null时,无法将其正确的进行解析,进而导致上述异常。
    将mapper中代码修改如下:
    <insert id="save" parameterType="Khjlmx">
    insert into TXS_LHKH_KHJLMX(id,khjl,khzx,khnr,trnr)
    values(fnextid(‘TXS_LHKH_KHJLMX’),#{khjl,jdbcType=NUMERIC},#{khzx},#{khnr},#{trnr})
    </insert>
    解决办法二:

    在配置文件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也能够将其转换成正确的数据类型,并进行存储操作。

  • 相关阅读:
    PAT Advanced 1067 Sort with Swap(0, i) (25分)
    PAT Advanced 1048 Find Coins (25分)
    PAT Advanced 1060 Are They Equal (25分)
    PAT Advanced 1088 Rational Arithmetic (20分)
    PAT Advanced 1032 Sharing (25分)
    Linux的at命令
    Sublime Text3使用指南
    IntelliJ IDEA创建第一个Groovy工程
    Sublime Text3 安装ftp插件
    Sublime Text3配置Groovy运行环境
  • 原文地址:https://www.cnblogs.com/ming-blogs/p/10288561.html
Copyright © 2011-2022 走看看