当传入的条件为Integer类型时,需要进行入下判断:
<if test="ew.status != null ">
pp.status = #{ew.status}
</if>
如果status传入的值为0时,且查询条件改为如下写法则sql不会拼接该条件:
<if test="ew.status != null and ew.status != ''">
pp.status = #{ew.status}
</if>
这是因为如果变量的值是0,即status = 0, mybatis在进行 status != ' ' 判断的时候会认为status的值是空字符串,即status == ' '为true。与此同时当传入的条件类型为Double、Date类型时是一样的。所以如果判断的数据是Integer、Double、Date类型只需要判断 != null 即可。