【Mybatis】No enum constant org.apache.ibatis.type.JdbcType.LONG

【问题】

晚上上线,代码更新后,生产环境出问题,订单无法提交。报错如下:

nested exception is org.apache.ibatis.builder.BuilderException: Error resolving JdbcType. Cause: java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.LONG

错误很明显,mybatis提示没有LONG这个类型,但自己并没有修改过xml文件啊。

找到本次提交的代码文件,发现同事改了一个xml文件,确实加了一段代码,如下:

<if test="uplusCustomerId != null">
    and uplus_customer_id = #{uplusCustomerId,jdbcType=LONG}
</if>

【原因】

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

其中并没有LONG这个类型,LONG对应的类型应该是BIGINT,所以将上述代码类型改为BIGINT问题就解决了。

注意:在书写jabcType类型的时候,是有严格的大小写的区分的,否则会抛出上面的异常,即mybatis所定义的类型常量枚举不存在。

【总结】

下面附上一张数据库类型与Java类型对应表:

DB TypeJAVA Type
CHARString
VARCHARString
LONGVARCHARString
NUMERICjava.math.BigDecimal
DECIMALjava.math.BigDecimal
BITboolean
BOOLEANboolean
TINYINTbyte
SMALLINTshort
INTEGERint
BIGINTlong
REALfloat
FLOATdouble
DOUBLEdouble
BINARYbyte[]
VARBINARYbyte[]
LONGVARBINARYbyte[]
DATEjava.sql.Date
TIMEjava.sql.Time
TIMESTAMPjava.sql.Timestamp
CLOBClob
BLOBBlob
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页