首页 > 数据库 >问题解决系列:从源码讲解为什么是 'JZ0SL_ Unsupported SQL type 1111'

问题解决系列:从源码讲解为什么是 'JZ0SL_ Unsupported SQL type 1111'

时间:2022-12-03 14:35:59浏览次数:38  
标签:1111 源码 报错 jdbcType mybatis null type


一、问题场景

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

java.io.IOException: JZ0SL: Unsupported SQL type 1111.

本篇博客主要是讲述该解决方案。

问题解决系列:从源码讲解为什么是

二、问题环境

软件

版本

mybatis

3.5.3

sybase驱动

jConnect4


三、问题原因

先总结一下问题原因:

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

问题解决系列:从源码讲解为什么是


接下来,我们可以看源码:

问题解决系列:从源码讲解为什么是


问题解决系列:从源码讲解为什么是


从上图源码可以看出,是做了判断,如果为空,就取 ​​org.apache.ibatis.session.Configuration#getJdbcTypeForNull​​的值。那这个值是多少,我们切到源码,从下图可以看出:

问题解决系列:从源码讲解为什么是


里面设置了,如果 ​​jdbcType​​​的值为null的时候,就默认使用为 ​​org.apache.ibatis.type.JdbcType#OTHER​​​,其值为​​java.sql.Types#OTHER​​ ,如下图:

问题解决系列:从源码讲解为什么是


问题解决系列:从源码讲解为什么是

问题解决系列:从源码讲解为什么是

四、解决方案


1. 设置对应的类型,如设置字符串类型:

#{resultStr,jdbcType=VARCHAR}


2. 设置默认值,不为空

问题解决系列:从源码讲解为什么是

五、结果

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

问题解决系列:从源码讲解为什么是

六、总结

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

问题解决系列:从源码讲解为什么是

PS:随缘求赞、关注

问题解决系列:从源码讲解为什么是


如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;

如果有好的讨论,可以留言;

如果想继续查看我以后的文章,可以点击关注

也可以扫描以下二维码,关注我的公众号:枫夜之求索阁,查看我最新的分享!

问题解决系列:从源码讲解为什么是


问题解决系列:从源码讲解为什么是

标签:1111,源码,报错,jdbcType,mybatis,null,type
From: https://blog.51cto.com/fengyege/5908533

相关文章

  • 将makefile中的宏传递给源码
    前言:今天遇到一个问题,在makefile中定义个宏,宏为一个字符串,希望将该字符串传递给代码。但是一直传递不过去,最后才找到原因,这里小结一下。直接上代码,makefile如下:1C_F......
  • TypeScript 常见方法
    TypeScriptArray(数组)数组对象是使用单独的变量名来存储一系列的值。数组非常常用。假如你有一组数据(例如:网站名字),存在单独变量如下所示varsite1="Google";varsite2......
  • idea查看源码快捷键
    查看当前类的层次结构⭐⭐⭐⭐⭐ Ctrl+H查看类结构⭐⭐⭐⭐ Alt+7快速检索类⭐⭐⭐⭐⭐ Ctrl+N(Win)查看方法/类的实现类⭐⭐⭐⭐ Ctrl+Alt+B(Win)......
  • typescript学习总结
    typescript学习总结qq学习讨论群:910316886<!--安装:npmi-gtypescripttsc-v(查看typescript版本)将ts编译为js,在终端输入命令,tschello.ts执......
  • js实现截取文件后缀,input触发的事件触发流程,input type=file 同一个文件两次上传,第二
    https://blog.csdn.net/m0_46693606/article/details/127067545varfilePath="jb51.png";varindex=filePath.lastIndexOf(".");//获取后缀varext=filePath.subs......
  • redis字符串的底层源码以及应用实例
    内部编码int8个字节的长整型embstr小于等于39个字节的字符串raw大于39个字节的字符串string底层使用的sds自定义的字符串,因为c语言中string默认为\0为结尾,而redi......
  • typesafe读取配置文件
    typesafe可以读取properties文件、.config文件1.pom<dependency><groupId>com.typesafe</groupId><artifactId>config</artifact......
  • C++学习------cmath头文件的源码学习08
    函数族定义---四舍五入与余数函数ceil---返回不小于x的最小整数doubleceil(doublex);代码示例:printf("ceilof2.3is%.1f\n",ceil(2.3));printf("ceilof3.8......
  • shiro源码第一天:登陆验证部分
    登陆验证部分:​​1.单点登陆系统中不同系统密码验证方式不一样​​1.单点登陆系统中不同系统密码验证方式不一样问题:当使用shiro作为鉴权框架时,首先用到的应该就是登陆认证......
  • EasyExcel 实践与源码梳理
    目录​​1.写在最前​​​​1.1EasyExcel版本​​​​1.2初探源码​​​​2.表头实体类MyUser​​​​3.最简单的导出Excel文件​​​​4.源码demo:​​​​4.1读Exc......