记录使用mybatis时踩到的坑-integer类型数据为0时,会判断为:等于空字符串为true

因为做查询操作时,需要设置为传入参数值才进行查询,于是判断条件是:

status != null and status != ''

即mapper层的写法:

<if test="status != null and status != ''">and status=#{status}</if>

 

但设计表时,默认status=0表示正常状态,status=1表示其他状态。当传入status=0进行查询时,发现筛选条件失效,即会将status=0和status=1的都查询出来。

经过排查发现,当status=0时,mybatis会认为status!=''为false(即当status=0时,status==''为true),所以无法进入status的条件判断。

解决办法:

设计表时,尽量避免status=0的默认值设置;

或者去掉status!=''的判断,但这样也会造成当status不传值时,将所有状态下的记录查出来。

posted @   DoubleFishes  阅读(460)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
  1. 1 今时意所属 你要不要买菜
  2. 2 夏夜最后的烟火 颜人中
  3. 3 夜泊秦淮 Ice Paper
  4. 4 脸红接收处 Plggy
  5. 5 那些花儿 朴树
夏夜最后的烟火 - 颜人中
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Not available

点击右上角即可分享
微信分享提示