使用Mybatis/TkMybatis/Mybatis

您所在的位置:网站首页 oracle无效数据类型 使用Mybatis/TkMybatis/Mybatis

使用Mybatis/TkMybatis/Mybatis

2024-07-16 20:22| 来源: 网络整理| 查看: 265

场景:使用TkMybatis/Mybatis-Plus等封装好CRUD框架有时候需要更新或新增某个字段的值为null存到数据库,但是往往出现如下错误:

Caused by: org.apache.ibatis.type.TypeException: Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111     at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:47)     at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:87)     ... 48 more Caused by: java.sql.SQLException: 无效的列类型: 1111

原因:Mybatis的xml方法传入的参数的字段为null,无法获取到对应的jdbcType类型,从而报错。

解决方法:

一、指定插入值的jdbcType,将xml方法的sql改成`insert into user(id,name) values({id,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR}) `,或者xml文件判空。

这种方法对于TkMybatis/Mybatis-Plus框架行不通,因为我们是直接调用ORM封装好的CRUD方法,并不想自己新写Mybatis方法来修改xml内容。

二、修改Mybatis配置,添加 jdbc-type-for-null: 'null'

# mybatis配置 mybatis: configuration: # 开启在控制台输出日志,生产关闭 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # oracle不加报错 jdbc-type-for-null: 'null'



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3