mybatis什么时候必须指定jdbcType

2 篇文章 0 订阅
2 篇文章 0 订阅

mybatis什么时候必须指定jdbcType 

#{property, jdbcType=VARCHAR}
如果一个列允许 null 值,并且会传递值 null 的参数,就必须要指定 JDBC Type

如果是一个可以为null的字段,在insert的时候,没有给该字段赋值,mybatis就会报下面的错误

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='__frch_item_0.defaultValue', mode=IN, javaType=class java.lang.String, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #6 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)

Caused by: org.apache.ibatis.type.TypeException: Error setting null for parameter #6 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)
	... 54 more
Caused by: java.sql.SQLException: 无效的列类型: 1111

Mybatis中 javaType 和 jdbcType 对应关系

JDBCType            JavaType
CHAR                String
VARCHAR             String
LONGVARCHAR         String
NUMERIC             java.math.BigDecimal
DECIMAL             java.math.BigDecimal
BIT                 boolean
BOOLEAN             boolean
TINYINT             byte
SMALLINT            short
INTEGER             int
BIGINT              long
REAL                float
FLOAT               double
DOUBLE              double
BINARY              byte[]
VARBINARY           byte[]
LONGVARBINARY               byte[]
DATE                java.sql.Date
TIME                java.sql.Time
TIMESTAMP           java.sql.Timestamp
CLOB                Clob
BLOB                Blob
ARRAY               Array
DISTINCT            mapping of underlying type
STRUCT              Struct
REF                 Ref
DATALINK            java.net.URL

Mybatis JdbcType与Oracle、MySql数据类型对

MybatisJdbcTypeOracleMySql
JdbcTypeARRAY  
JdbcTypeBIGINT BIGINT
JdbcTypeBINARY  
JdbcTypeBIT BIT
JdbcTypeBLOBBLOBBLOB
JdbcTypeBOOLEAN  
JdbcTypeCHARCHARCHAR
JdbcTypeCLOBCLOBTEXT
JdbcTypeCURSOR  
JdbcTypeDATEDATEDATE
JdbcTypeDECIMALDECIMALDECIMAL
JdbcTypeDOUBLENUMBERDOUBLE
JdbcTypeFLOATFLOATFLOAT
JdbcTypeINTEGERINTEGERINTEGER
JdbcTypeLONGVARBINARY  
JdbcTypeLONGVARCHARLONG VARCHAR 
JdbcTypeNCHARNCHAR 
JdbcTypeNCLOBNCLOB 
JdbcTypeNULL  
JdbcTypeNUMERICNUMERIC/NUMBERNUMERIC/
JdbcTypeNVARCHAR  
JdbcTypeOTHER  
JdbcTypeREALREALREAL
JdbcTypeSMALLINTSMALLINTSMALLINT
JdbcTypeSTRUCT  
JdbcTypeTIME TIME
JdbcTypeTIMESTAMPTIMESTAMPTIMESTAMP/DATETIME
JdbcTypeTINYINT TINYINT
JdbcTypeUNDEFINED  
JdbcTypeVARBINARY  
JdbcTypeVARCHARVARCHARVARCHAR
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值