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>;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值