使用Mybatis/TkMybatis/Mybatis |
您所在的位置:网站首页 › oracle无效数据类型 › 使用Mybatis/TkMybatis/Mybatis |
场景:使用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 |