概述
原文链接
https://blog.wanvale.com/archives/86/
摘要
报错内容如下:
org.springframework.jdbc.UncategorizedSQLException:Error setting null for parameter #6 with JdbcType OTHER . Try setting adifferent JdbcType for this parameter or a different jdbcTypeForNullconfiguration property.
问题分析
有兴趣的同学可以去读一下MyBatis的源码,在JdbcType.class里面定义了原生Jdbc的数据类型,里面定义了一个OTHER(Types.OTHER)。
所以MyBatis对所有null值的映射都为Jdbc OTHER
而对于Oracle数据库来说,是没办法处理OTHER类型的(MySQL中是可以正常插入的,因为MySQL比较遵循规范)
解决方法
方法1
一种解决方法是对数据变量设置jdbcType
TestMapper.xml
<insert id="..." parameterType="...">
INSERT INTO mybatis_test_01(id,name,remarks) VALUES(SEQ_TEST.nextval, #{name,jdbcType=VARCHAR}, #{remarks,jdbcType=VARCHAR)
</insert>
当然,这种方法的弊端是要增加大量代码,提高了后期维护的难度。
方法2
这种方法很简单,修改mybatis-config.xml,添加一行setting就可以了
<setting name="jdbcTypeForNull" value="NULL" />
把上面的一行添加到mybatis配置文件的标签内就可以为null指定jdbc类型了。
文档的描述如下:
当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。
至此,问题解决
最后
以上就是无聊草莓为你收集整理的MyBatis向Oracle数据库插入NULL数据报错的全部内容,希望文章能够帮你解决MyBatis向Oracle数据库插入NULL数据报错所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复