问题解决系列:从源码讲解为什么是‘JZ0SL-创新互联-成都快上网建站

问题解决系列:从源码讲解为什么是‘JZ0SL-创新互联

一、问题场景

正在做代码改造,使用mybatis+sybase进行数据库操作,运行过程中,提示以下报错:

创新互联公司专注于企业网络营销推广、网站重做改版、吉利网站定制设计、自适应品牌网站建设、HTML5建站商城系统网站开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为吉利等各大城市提供网站开发制作服务。
java.io.IOException: JZ0SL: Unsupported SQL type 1111.

本篇博客主要是讲述该解决方案。
09B4DB1B.jpg

二、问题环境
软件版本
mybatis3.5.3
sybase驱动jConnect4

三、问题原因

先总结一下问题原因:

这个问题主要是在sybase驱动jConnect4出现的。主要原因是:当insert、update语句的变量的值含有null值,就会报错。因为在mybatis里面,如果参数出现了null值,则在指定jdbcType类型的参数时,mybatis默认设置为jdbcType.OTHER,导致Sybase数据库无法识别此格式。

09B5B54F.gif
接下来,我们可以看源码:
09B73680.jpg
image.png
从上图源码可以看出,是做了判断,如果为空,就取org.apache.ibatis.session.Configuration#getJdbcTypeForNull的值。那这个值是多少,我们切到源码,从下图可以看出:
image.png
里面设置了,如果jdbcType的值为null的时候,就默认使用为org.apache.ibatis.type.JdbcType#OTHER,其值为java.sql.Types#OTHER,如下图:
image.png
image.png

09B877BA.png

四、解决方案

1. 设置对应的类型,如设置字符串类型:
#{resultStr,jdbcType=VARCHAR}

2. 设置默认值,不为空

09B9C47E.gif

五、结果

这里我是进行了第一种结果,运行之后,问题解决。
09C15439.gif

六、总结

遇到问题,除了知道解决方案,为了技术进步,我们也要考虑为什么是这样的报错。这样日积月累,技术能力就会获得长足的进步。
09C241C5.gif

PS:随缘求赞、关注

09C382F0.gif
如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以点击关注
也可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!
image.png
image.png

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:问题解决系列:从源码讲解为什么是‘JZ0SL-创新互联
文章路径:http://kswjz.com/article/docego.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流