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

  • 相关阅读:
    队列 和 线程 之GCD dispatch
    ios NSUserDefaults存储数据(偏好设置)
    Binary Tree postorder Traversal
    Binary Tree Inorder Traversal
    Binary Tree Preorder Traversal
    Rotate List
    Reversed Linked List(Reverse a singly linked list)
    Remove Element
    Swap Nodes in Pairs
    Add Two Numbers
  • 原文地址:https://www.cnblogs.com/ming-blogs/p/10288561.html
Copyright © 2011-2022 走看看