将参数设置为 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} 来解决它,但是我的项目到处都有很多这样的问题,而且很快就会到期。我不想更改所有这些。
最佳答案
问题是,自 3.0.x 版本以来,空参数的默认 JDBC 类型是 Types.OTHER
,某些 JDBC 驱动程序(如 Oracle 10g)不支持它。
Here解释这个问题的帖子。
我找到的解决方案很简单,我在配置文件中将jdbcTypeForNull
设置为NULL
。
<configuration>
<properties resource="mybatis-config.properties" />
<settings>
<setting name="jdbcTypeForNull" value="NULL" />
</settings>
<environments default="development">
....
</environments>
<mappers>
....
</mappers>
</configuration>
关于java - 使用 Mybatis 和 ojdbc14.jar 为参数设置 null 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18427682/