Mybatis中踩过的坑(一)

背景

今天在写项目时发现之前写过的一个分页查询功能有bug,订单状态筛选功能失效,从Service层源代码debug终于找到了原因

Bug原因分析

点击查询按钮发现请求正常,状态码返回200,于是进到Service层打断点调试,发现一切都正常,切换不同的订单状态筛选返回到的集合大小不变,于是意识到应该是Dao层动态sql编写出了点问题。sql如下:

其他筛选条件都正常,于是原因锁定在status非空判断这里,查阅相关资料终于知道问题出在哪了,就是这里的"status != ' ' "出了问题。

“坑”描述

在Mybatis中,如果对象是Number类型,当传值为0时status != ' '会被解析成false,否则为true,浮点型0.00也是如此。所以这里直接解析成了false。也就是说Number类型传0时在Mybatis中会被判断为' ',因此只有String类型才需要判断是否!=’’,其他类型完全没有这个必要。

解决方案

将status != ' '删除即可,测试筛选功能恢复正常。

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值