解决方案
方法一:指定字段的类型
@update("update 表名 set 字段 = #{字段名,jdbcType=数据库中该字段的类型}")
方法二:配置文件中指定为空时的类型
mybatis-plus.configuration.jdbc-type-for-null = 'null'
顺带记录一下大佬排查异常的方法
参考:https://blog.youkuaiyun.com/wangchsh2008/article/details/96038046
- 根据报错信息定位最先抛出错误的方法
- 根据方法代码找出抛错的原因
可以看出传入的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;
-
根据报错信息找到var1的来源
-
最终定位到var1为setParameter中的JdbcType参数
-
继续向上找jdbctype的来源
-
在没有上送参数和参数类型的时候会给参数类型设置一个默认类型其他,这个其他类型的值就是 111111
-
如果在配置中设置jdbctype的值为NULL,在报错位置将会返回995,不再报错