gpt4 book ai didi

java - 执行查询时出现 MyBatis NumberFormatException

转载 作者:行者123 更新时间:2023-11-30 07:03:55 36 4
gpt4 key购买 nike

使用 MyBatis,我有一个 SQL 作为参数接收字符串 "fr.id_lotacao in (3007, 3008, 3009, 3010)"

SQL:

...
<if test="idLotacao != -1">
and ${idLotacao}
</if>
...

我这样从 Java 调用:

getDB1SqlSessionTemplate().selectList("sql", MyBatisUtil.createMap("idLotacao", getIdsLotacao(lotacao)));

其中 getIdsLotacao(lotacao) 返回作为参数传递的字符串。

但是,执行时,MyBatis 抛出错误:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 

### Error querying database. Cause: java.lang.NumberFormatException: For input string: "fr.id_lotacao in (3007, 3008, 3009, 3010)"

当MyBatis接收到带$的参数时,是不是要把${idLotacao}替换成字符串"fr.id_lotacao in (3007, 3008, 3009, 3010)"?

我做错了什么?是什么导致了这个错误?

最佳答案

有时,即使您正在比较字符串,并且您的参数也是一个字符串,Mybaits 也会返回一个 NFE。

要解决这个问题,您必须替换以下表达式:

<if test="parameter =='A'"> 
AND YOURCOLUMN IS NOT NULL
</if>

为此:

<if test="parameter eq 'A'.toString()"> 
AND YOURCOLUMN IS NOT NULL
</if>

关于java - 执行查询时出现 MyBatis NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28002954/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com