<if test="invalid != null and invalid != ''">
and invalid = #{invalid}
</if>
如果 invalid 是String字符串类型的话,这个写法是符合的。
但是如果是Integer类型的话,如果变量的值为0,即 invalid = 0, mybatis在进行 invalid != '' 的时候会认为 invalid 的值是空字符串, 此时相当于 invalid == '' 为true。
这时候只需要判断 invalid != null 便成立。
<if test="invalid != null">
and invalid = #{invalid}
</if>