mybatis的if条件中判断false/0

今天测试提的一个bug,我一度怀疑是他估计搞事情,后来发现是真的存在,

描述:

页面上有三个键: 全部, 已派车, 未派车 ,单选框,顾名思义,全部包含已派车和未派车,

bug的来源是点击未派车的时候搜出出来的数据是错误的

我在没有看代码开日志的时候就想了,要错就全错,不可能就一种选项错吧,然后我就看日志,发现当选择未派车的时候

该字段对应的是false,在日志中,这个字段没有加入到查询条件中,但是当true的时候是对的


我在service层打印了一下值,是false没有错.于是我在service层做了判断,如果true就变成1,false就变成0.因为数据库中布尔值就是0和1,

(sqlserver数据库),

entity.put("pcyes", "true".equals(entity.getString("pcyes"))? 1 : ("false".equals(entity.getString("pcyes")) ?0:"" ) );

重启后还是不正确,依旧无法判断0;

接下来

service层没错,继续下去就是xml文件了,该条件的代码如下:

 <if test="pcyes!= null and pcyes!=''">
			<![CDATA[ AND  T_CAR_OUT.pcyes = #{pcyes} ]]>
		</if>
 我没认为我的判断是错误的,但是既然false/0是进不来的,service层都有数据,只有这里错了,我考虑了一下,就先取掉了

pcyes!='',

 <if test="yipai != null">
			<![CDATA[ AND  T_CAR_OUT.pcyes = #{yipai} ]]>
		</if>

没想到真的成功了,好坑,

然后上网查了一下,这里确实是个坑:

参考自:

http://blog.csdn.net/lich1n/article/details/73511180


MyBatis的if标签可以用于多条件判断。使用if标签可以根据给定的条件来动态生成SQL语句。if标签的使用方法简单,通常与test属性联合使用。语法如下: ``` <if test="判断条件"> SQL语句 </if> ``` 在判断条件,可以使用多种比较运算符来进行逻辑判断。例如,gt表示大于,gte表示大于等于,eq表示等于,neq表示不等于,lt表示小于,lte表示小于等于。需要注意的是,判断条件需要用双引号包裹,而字符串需要用单引号包裹。但是需要注意的是,由于XML语法的限制,判断条件不能直接使用小于号(<),否则会报错。 如果需要同时判断多个条件,可以使用and和or来组合条件。例如: ``` <if test="条件1 and 条件2"> SQL语句 </if> <if test="条件1 or 条件2"> SQL语句 </if> ``` 这样可以根据不同的条件生成不同的SQL语句,以满足不同的需求。 总之,MyBatis的if标签可以实现多条件判断,使得生成的SQL语句更加灵活和可定制化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mybatis<if>标签bool值类型为false判断方法](https://download.csdn.net/download/weixin_38685831/12747688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [MyBatis if标签:条件判断](https://blog.csdn.net/qq_25073223/article/details/128066073)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [mybatis if条件判断](https://blog.csdn.net/JacaCao/article/details/108206499)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值