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

发布时间:2024-12-04 07:18

狗狗不听话时,使用‘No’的正确发音和语气 #生活技巧# #宠物护理技巧# #狗狗行为纠正#

最新推荐文章于 2023-12-20 13:22:22 发布

好好生活_ 于 2019-02-21 20:53:02 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

【问题】

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

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

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

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

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

【原因】

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 TypeCHARStringVARCHARStringLONGVARCHARStringNUMERICjava.math.BigDecimalDECIMALjava.math.BigDecimalBITbooleanBOOLEANbooleanTINYINTbyteSMALLINTshortINTEGERintBIGINTlongREALfloatFLOATdoubleDOUBLEdoubleBINARYbyte[]VARBINARYbyte[]LONGVARBINARYbyte[]DATEjava.sql.DateTIMEjava.sql.TimeTIMESTAMPjava.sql.TimestampCLOBClobBLOBBlob

网址:【Mybatis】No enum constant org.apache.ibatis.type.JdbcType.LONG https://www.yuejiaxmz.com/news/view/369719

相关内容

Mybatis
MyBatis 声明JdbcType. 如#{name,jdbcType=VARCHAR}
mybatis中的不起作用
JAVA编程思想学习总结:第五章——初始化与清理
MyBatis中的if判断的问题 ,存在误区
如何开发Wi
2023考研英语作文热门话题素材积累:人生哲理类
二手家电交易网站(JSP+java+springmvc+mysql+MyBatis)
正压留置针=正压封管?NO NO NO...
绿色技术No.96

随便看看