Mybatis——No enum constant org.apache.ibatis.type.JdbcType.XXX的解決辦法
阿新 • • 發佈:2018-11-09
該報錯基本上是JdbcType的引數不對,出錯的原因無非就是 沒有這種型別的引數 或者引數大小寫的問題這兩種
舉個例子
No enum constant org.apache.ibatis.type.JdbcType.INT的意思是mybatis沒有INT該型別的列舉常量,導致該異常丟擲。
那為什麼會報錯呢?
我們先看看Mybatis都支援那些型別
而MyBatis所支援的jdbcType型別有一下幾種:
BIT、 FLOAT、CHAR、TIMESTAMP、OTHER、 UNDEFINED、TINYINT、REAL、VARCHAR、BINARY、BLOB、 NVARCHAR、SMALLINT、DOUBLE、LONGVARCHAR、VARBINARY、CLOB、NCHAR、INTEGER、NUMERIC、DATE、LONGVARBINARY、BOOLEAN 、NCLOB、BIGINT、DECIMAL、TIME、NULL、CURSOR
看到這裡我們大概發現了問題,因為在上面我們就根本沒有找到INT型別。
到這我們就差不多知道,導致報錯的原因是因為mybatis沒有INT型別,只有與之對應的INTEGER型別,只需要將xml配置檔案裡的資料型別改為INTEGER就好了。
注意:在書寫jabcType型別的時候,是有嚴格的大小寫的區分的,否則會丟擲上面的異常,即mybatis所定義的型別常量列舉不存在。
為了防止以後出錯,這裡附上一張mybatis型別與Java的對應表。
資料庫型別和Java型別之間的關係:
- DBC Type Java Type
- 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