该报错基本上是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