Mybatis test条件表达式类型问题

Mybatis test条件表达式类型问题

记录一个使用mybatis时遇到的一个逆天bug,坑了我俩小时

mapper接口:

List<AirRasterDataVO> selectAirRasterDataByRegion(@Param("size") int size, @Param("provinceCode") String provinceCode, @Param("parentRegion") String parentRegion, @Param("region") String region, @Param("area") List<String> area, @Param("gridId") String gridId, @Param("gridCode") List<String> gridCode, @Param("index") List<String> index, @Param("time") String time, @Param("type") String type);

mapper接口中传递了一个type参数,调用时一直出现报错:

{
    "code": 400,
    "success": false,
    "data": {},
    "msg": "nested exception is org.apache.ibatis.exceptions.PersistenceException: \r\n### Error querying database.  Cause: java.lang.NumberFormatException: For input string: \"w\"\r\n### Cause: java.lang.NumberFormatException: For input string: \"w\""
}

一直说我传的这个type,(“w”),类型转换有问题,一直要给我转成数字类型的,我找了好久,百思不得其解,最终看到我choose when的代码

<choose>
        <when test="type=='y'">
            WHERE year_key=#{time} and province_code=#{provinceCode}
        </when>
        <otherwise>
            WHERE update_time=#{time} and province_code=#{provinceCode}
        </otherwise>
 </choose>

一开始我真看不出来这choose when有什么问题,就是很正常的字符串比较,直到我给**‘y’**加上toString,问题解决

<choose>
        <when test="type=='y'.toString()">
             WHERE year_key=#{time} and province_code=#{provinceCode}
        </when>
        <otherwise>
             WHERE update_time=#{time} and province_code=#{provinceCode}
        </otherwise>
</choose>
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Acerola-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值