MyBatis中报错‘Error querying database. Cause: java.lang.NumberFormatException: For input string: “XXX”’解决方案
SpringBoot项目中通过MyBatisPlus在mapper中查询数据时报错:【通用异常:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
Error querying database. Cause: java.lang.NumberFormatException: For input string: “Y”
Cause: java.lang.NumberFormatException: For input string: “Y”】

mapper中代码:
<if test="dto.insuCode != null and dto.insuCode !='' and dto.insuCode=='Y'">
and t.insu_code IS NOT NULL
</if>
查资料得知,报错原因为:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,'Y’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析,需要将’Y’改为"Y",或者加 .toString() 来转换。
所以可以将代码改为如下【注意 " 与 ‘ 的使用】:
<if test='dto.insuCode != null and dto.insuCode !="" and dto.insuCode=="Y"'>
and t.insu_code IS NULL
</if>
或者将字符转为字符串,改为:
<if test="dto.insuCode != null and dto.insuCode !='' and dto.insuCode=='Y'.toString()">
and t.insu_code IS NOT NULL
</if>
在SpringBoot项目中使用MyBatisPlus时,查询时遇到NumberFormatException,原因是OGNL表达式解析时将字符Y误解析为字符而非字符串。解决方法是确保字符串匹配,或将字符转换为字符串。
1万+

被折叠的 条评论
为什么被折叠?



