1 场景

mysql mapper 方法报错:

### Cause: java.lang.NumberFormatException: For input string: "-"(String), NumberFormatException: For input string: "-"(String), org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.NumberFormatException: For input string: "-";

java 字段:private String capacityClassification;
java 入参: “capacityClassification”: “-”;

mysql 字段:

`capacity_classification` varchar(50) DEFAULT NULL COMMENT '运力分类:三年期、一年期、市场分类'

xml 判断:

<if test="param.capacityClassification != null and param.capacityClassification != '' and param.capacityClassification != '-'">
   and capacity_classification = #{param.capacityClassification}
</if>

2. 原因

MyBatis 会把右边的 ‘-’ 当成【字符 char】,而左边是【字符串 String】OGNL 表达式在比较 String != char 时,会尝试把字符串 强制转成数字,于是 - 就爆了。

3. 解决

<if test="param.capacityClassification != null 
          and param.capacityClassification != '' 
          and param.capacityClassification != &quot;-&quot;">
    and capacity_classification = #{param.capacityClassification}
</if>
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐