MyBatis 声明JdbcType. 如#{name,jdbcType=VARCHAR}

在我们结合MyBatis框架使用时,发现如下问题,当SQL语句为insert或者update时,如果其变量含有null值,会报错:

###Cause: java.sql.SQLException: JZ006: Caught IOException: java.io.IOException: JZ0SL: Unsupported SQL type xxx.

是由于MyBatis在进行操作的时,会指定jdbcType类型的参数,如果参数为null 其类型默认设置为jdbcType.OTHER,导致数据库无法识别此格式。

解决方法:给参数加上jdbcType可解决(注意大小写) 。

即如图:

因为MyBatis在执行SQL时会自动通过对象中的属性来去给SQL中参数进行赋值,它会自动将Java类型转换成数据库的类型。如果一旦传入的是参数值是null 程序就无法准确判断这个类型应该是什么(是Integer?是VARCHAR?还是别的?),就有可能将类型转换错误,从而报错。

加入jdbcType正是为了解决这样的报错,需要针对这些可能为空的字段,手动指定其转换时用到的类型。

一般情况下,我们只需默认判定所有字段都可为空,即全部手动设置其转换类型即可,而无需去判断其每个字段是否可以为空。

同时还需在mybatis-config.xml文件中进行如下配置,添加settings配置;

 

  • 31
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值