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

发布时间:2024-12-03 22:42

使用Priceline的Name Your Own Price功能 #生活技巧# #节省生活成本# #出行省钱建议# #打折酒店预订#

最新推荐文章于 2024-09-18 17:16:37 发布

打铁黑人 于 2019-08-23 09:39:39 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

在我们结合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配置;

网址:MyBatis 声明JdbcType. 如#{name,jdbcType=VARCHAR} https://www.yuejiaxmz.com/news/view/365314

相关内容

转:mybatis if test 不为空字符串或null
MySQL实现序列(Sequence)效果以及在Mybatis中如何使用这种策略
cmd命令执行的数据清洗工具
mybatis resultmap映射结果集(xml映射配置一)
thisname != null && thisname.equals(name);
【网站项目】基于springboot的二手物品交易平台设计和实现
基于uniapp小程序的大学校园旧物捐赠网站附带文章源码部署视频讲解等
Myles Yang/OnlineEdu
mybatis中的不起作用
Mybatis

随便看看