Mapper文件中拼接条件false时失效

问题

前端传递isMoney分别为"", true,false,当前端传入参数为false时."AND bounds IS NOT NULL"执行的sql并没有被拼接上

<if test="isMoney != "" and isMoney != null">
    <if test="isMoney == true">
        AND bounds IS NULL
    </if>
    <if test="isMoney == false">
        AND bounds IS NOT NULL
    </if>
</if>

当参数为Boolean类型时,mybatis解析时会将false看作""

false == “”,但是 false != null

在这里插入图片描述

mybatis会默认把空值转为false(false == “”)。所以如果遇见前面传空值,这个字段在mybatis里面永远就是false了,可以使用数字类型代替,但是不要使用0作为参数(注意Integer的判断,mybatis会默认把0变成 ‘’)。

总结

判断条件时尽量不要使用Boolean类型,可以使用数字进行代替

要注意字符和字符串是不相同的 (“” ,‘’)在if条件中有常量字符串时,外引号用单引号**()**

test=‘isMoney == “123”’>)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值