mapper.xml中<if>标签输入的参数为0的时候的坑

本文探讨了在使用MyBatis进行数据库操作时,IF标签对于非字符串类型数据的不当处理方式,特别是当整型数据为0时会被误判为空字符串,导致查询条件失效的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说结论:

<if>标签中,对于非字符串类型的数据,无需判断 != ‘’,否则返回结果为false

今天改代码过滤查询结果的时候有一个输入的参数是0,然后这句话失效了
在这里插入图片描述
在这里插入图片描述
本来以为是params没有拿到这个值,或者数据库查询有问题,结果debug发现params里面获取到了,数据库直接查询的结果也没有问题

但是MyBatis Log插件上的记录里查询条件并没有equipmentType这一条件,于是把问题锁定在了mapper文件上
在这里插入图片描述

在这里插入图片描述
就是这句话

<if test="equipmentType != null and equipmentType != ''"> and tem.equipment_type = #{equipmentType}</if>

把<if>标签的内容删掉之后可以正常查询,所以是<if>标签的问题…
整型数据(Integer ,int)值为0时在if标签中会判断为空字符串,if标签值为false,查询条件不生效

<if test="equipmentType != null"> and tem.equipment_type = #{equipmentType}</if>

尝试之后,删掉判断为 != ‘’ 就行

或者,,在添加查询条件的时候把参数toString一下,没试过,感觉应该可行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值