Gar*_*ryX 4 java mybatis ojdbc
将参数设置为null时出错.
使用ojdbc14.jar时只会出现此问题.使用ojdbc6.jar时,没问题.
我在mybatis配置xml中有此设置
<settings>
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
Run Code Online (Sandbox Code Playgroud)
错误消息是:
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
Run Code Online (Sandbox Code Playgroud)
xml中的sql是
<update id="rename" parameterType="Element">
update dsb_element t set t.elementname = #{elementName} where t.elementid = #{elementId}
</update>
Run Code Online (Sandbox Code Playgroud)
java调用它
com.my.Element ele = new Element();
ele.setElementId("some-id");
ele.setElementName(null);
sqlSession.update(getMyBatisId("rename"), element) ;
Run Code Online (Sandbox Code Playgroud)
问题是:
这是ojdbc14.jar的问题,如果是,为什么?
我知道我可以使用#{elementName,jdbcType = VARCHAR2}解决它,但我的项目到处都有很多这个问题,很快就会到期.我不想改变所有这些.
问题是,从3.0.x版本开始,null参数的默认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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8169 次 |
| 最近记录: |