setting null for parameter #1 with JdbcType OTHER . Try setting a different Jdbc...
🚨 错误信息
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='saknr', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: 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: Invalid column type: 1111
🤖 AI解决方案
代码报错分析
根本原因:MyBatis 尝试向数据库传递一个
问题位置:映射参数
方案一:在 MyBatis 映射文件中指定
明确参数类型:为所有可能为
配置检查:在项目启动时验证 MyBatis 配置,确保
工具推荐:使用 MyBatis 插件(如 MyBatis PageHelper)或 IDE 插件(如 MyBatisX)自动检测映射类型缺失问题。
---
1. 错误翻译
原文:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='saknr', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: 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: Invalid column type: 1111 译文:MyBatis 系统异常:嵌套异常为类型处理异常——无法为映射设置参数(属性 'saknr',输入模式,Java 类型为 Object,JDBC 类型为空)。原因:使用 JDBC 类型 OTHER 设置第1个参数的空值时出错。建议为该参数设置不同的 JDBC 类型,或调整 jdbcTypeForNull 配置属性。根本原因:SQL 异常——无效的列类型 1111。
---
2. 原因分析
null 参数时,未明确指定其 JDBC 类型(jdbcType=null),导致 MyBatis 默认使用 OTHER 类型(代码 1111),而数据库驱动不支持该类型。 saknr(第 1 个参数)在传入 null 值时未定义 jdbcType。 ---
3. 解决方案
方案一:在 MyBatis 映射文件中指定
jdbcType xml
方案二:在 MyBatis 配置中全局设置 jdbcTypeForNull
xml
方案三:在注解中指定类型(使用 @Param + 动态 SQL)
java
// 适用于注解方式
@Select("SELECT * FROM table WHERE saknr = #{saknr, jdbcType=VARCHAR}")
List queryData(@Param("saknr") String saknr);
---
4. ️ 预防措施
null 的参数显式设置 jdbcType(如 VARCHAR、INTEGER 等),避免依赖默认值。 jdbcTypeForNull 已设为数据库支持的合法类型(如 NULL 或 VARCHAR)。 ---
修复后建议:优先选择方案一(局部修复),若项目中有大量可为空的参数,可结合方案二(全局配置)。