Error setting null for parameter #10 with JdbcType OTHER .

今天写了一个mybatis的sql语句,每个字段都没有写对应的jdbcType,印象中自己从来没有写过这个type。

今天竟然出现了问题,问题如下,查了资料说了,是因为如果传入的值为null,mybatis无法匹配,所以,写上了,问题解决。

下面的解决办法是网络查找的。做个记录备忘。

适配oracle数据库的时候,mybatis报了Error setting null parameter,bug发现是参数出现了null值,对于Mybatis,如果进行操作的时候,没有指定jdbcType类型的参数,就可能导致问题。

postgreSQL,MySQL,SQLSERVER都支持JdbcType.NULL类型,Oracle是不支持,适配的时候也因为这个问题导致mybatis报错。

比如,之前配置#{submitDate},它会在oracle中报错:Error settingnull parameter

更改成#{submitDate,jdbcType=DATE},注意jdbcType是区分大小写的。

看网上说可以是settings文件中做个设置,可以不用写jdbcType,有网友说无效,因为本人的是springboot项目,不知道在哪里配置,所以不知道第二种方式是否有效。

mybatis 插入空值時需要指定jdbcType

报错内容:

### Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #10 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型

MyBatis 插入空值时,需要指定JdbcType

mybatis insert空值报空值异常,但是在pl/sql不会提示错误,主要原因是mybatis无法进行转换,

解决方法:

在insert语句中,增加jdbcType解决问题

<insert id="save" parameterType="Province">

  <![CDATA[

  insert into t_yp_province

  (fid,fname,fnumber,fsimpleName,fdescription,fcreateTime,flastUpdateTime,fdirect)

  values

  ( #{id,jdbcType=VARCHAR},

   #{name,jdbcType=VARCHAR},

   #{number,jdbcType=VARCHAR},

   #{simpleName,jdbcType=VARCHAR},

   #{description,jdbcType=VARCHAR},

   #{createTime,jdbcType=DATE},

   #{lastUpdateTime,jdbcType=DATE},

   #{direct,jdbcType=NUMERIC}

  )  

  ]]>

 </insert>;

猜你喜欢

转载自blog.csdn.net/suixinsuoyu12519/article/details/84839997
今日推荐