Cause: java.sql.SQLException: 无效的列类型: 1111

1.情景展示

使用mybatis给Oracle表插入数据的时候,报错信息如下:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='VERCODE', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #6 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111

2.具体分析

我们知道,在SQL语句当中,如果我们在执行插入的时候,指定了某个字段,但并没有给值的情况下;

默认情况下,在插入数据时,该字段值为NULL(也就是没有给这个字段赋值)。

3.解决方案

为参数指定数据类型。

在xml里加上对应的数据类型:如下,这里我的是字符串,加:jdbcType=VARCHAR

再次执行,SQL语句输出如下:

插入成功。

同样地,如果需要将字段值更新为null的话,也需要加上。

<update id="updateJkdaUser" parameterType="hashmap">
    UPDATE JKDA_USER SET VERCODE=#{VERCODE,jdbcType=VARCHAR} WHERE TELPHONE=#{TELPHONE}
</update>

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2022-05-30 16:34  Marydon  阅读(1536)  评论(0)    收藏  举报