Mybatis报错org.apache.ibatis.type.TypeException

本文分享了一次在使用Mybatis时遇到的参数类型不匹配错误的解决过程。作者在尝试设置参数时,遇到了java.lang.String无法转换为java.lang.Integer的问题,经过调试发现是由于配置文件中parameterType属性设置错误所致。文章强调了在遇到此类问题时,应仔细检查所有配置,避免忽视细节导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在写Mybatis时报错:

org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='name', mode=IN, javaType=class java.lang.Integer, jdbcType=VARCHAR, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType VARCHAR . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

很明显类型不匹配,检查了几遍都没发现问题在哪。

于是进入源码一点一点调试。

发现是在读取parameterType时类型为java.lang.Integer,而我明明需要的是String。

果然在配置文件里面找到了parameterType="java.lang.Integer"

原因是我复制的ById方法的配置忘了改了。而查错的时候没想到查看属性值,导致一直没找到问题所在。

特意写出来,希望有类似问题的同学仔细检查下所有的配置,很有可能就错在你没注意到的地方。同时也提醒自己写代码要仔细,很多时候这种自己忽略的细节一旦出错是最难找的了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值