问题
前端传递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”’>)**