概述
场景:使用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'
最后
以上就是开朗猫咪为你收集整理的使用Mybatis/TkMybatis/Mybatis-Plus框架报错:无效的列类型: 1111的全部内容,希望文章能够帮你解决使用Mybatis/TkMybatis/Mybatis-Plus框架报错:无效的列类型: 1111所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复