Mybatis-Plus update传入的字段有为空时报错:无效的列类型:1111

在这里插入图片描述

解决方案

方法一:指定字段的类型

@update("update 表名 set 字段 = #{字段名,jdbcType=数据库中该字段的类型}")

方法二:配置文件中指定为空时的类型

mybatis-plus.configuration.jdbc-type-for-null = 'null'

顺带记录一下大佬排查异常的方法

参考:https://blog.csdn.net/wangchsh2008/article/details/96038046

  1. 根据报错信息定位最先抛出错误的方法
    在这里插入图片描述
  2. 根据方法代码找出抛错的原因
    可以看出传入的var1参数没有匹配到case中的值所以在默认里抛出了异常
int getInternalType(int var1) throws SQLException {
        boolean var2 = false;
        short var4;
        switch(var1) {
        case -104:
            var4 = 183;
            break;
        ············
        default:
            SQLException var3 = DatabaseError.createSqlException(this.getConnectionDuringExceptionHandling(), 4, Integer.toString(var1));
            var3.fillInStackTrace();
            throw var3;
        }
return var4;
  1. 根据报错信息找到var1的来源
    在这里插入图片描述

  2. 最终定位到var1为setParameter中的JdbcType参数
    在这里插入图片描述

  3. 继续向上找jdbctype的来源
    在这里插入图片描述

  4. 在没有上送参数和参数类型的时候会给参数类型设置一个默认类型其他,这个其他类型的值就是 111111
    在这里插入图片描述

  5. 如果在配置中设置jdbctype的值为NULL,在报错位置将会返回995,不再报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值