4

将参数设置为 null 时出现错误。

此问题仅在使用 ojdbc14.jar 时发生。使用 ojdbc6.jar 时,没问题。

我在 mybatis 配置 xml 中有这个设置

<settings>
    <setting name="jdbcTypeForNull" value="NULL"/>
</settings>

错误信息是:

Caused by: org.apache.ibatis.type.TypeException: Error setting null for parameter #1 with JdbcType NULL . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull

xml中的sql是

<update id="rename" parameterType="Element">
    update dsb_element t set t.elementname = #{elementName} where t.elementid = #{elementId}
</update>

调用它的java是

 com.my.Element ele = new Element();
    ele.setElementId("some-id");
    ele.setElementName(null);
    sqlSession.update(getMyBatisId("rename"), element) ;

问题是:

是不是ojdbc14.jar的问题,如果是,为什么?

我知道我可以通过使用#{elementName, jdbcType=VARCHAR2} 来解决它,但是我的项目到处都有这个问题,而且很快就会到期。我不想改变所有这些。

4

1 回答 1

5

问题是自 3.0.x 版本以来,空参数的默认 JDBC 类型Types.OTHER不受某些 JDBC 驱动程序(如Oracle 10g )支持。

这里有一篇解释这个问题的帖子。

我找到的解决方案很简单,我在配置文件中设置jdbcTypeForNull为。NULL

<configuration>
    <properties resource="mybatis-config.properties" />
    <settings>
        <setting name="jdbcTypeForNull" value="NULL" />
    </settings>

    <environments default="development">
    ....
    </environments>

    <mappers>
    ....
   </mappers>
</configuration>
于 2014-05-26T14:27:17.573 回答