在这个问题上折腾了半天的时间,最后在第二天网上搜索的时候查出了答案
红线内的第1个if条件能进入,第二个不能。原因是mybatis使用的是ognl表达式,所以在判断字符串变量是否与字符串相等的时候使用 .toString()方法。这就是为什么第一个能进入,第二个不能进入的原因了。
另外记录一下下面这种用法:
<if test="companyId != null and companyId !='' ">
and 1 = 1
<if test="companyFlag == '1'">
AND COMPANY_ID = #{companyId,jdbcType=VARCHAR}
</if>
<if test="companyFlag == '0'">
AND COMPANY_ID != #{companyId,jdbcType=VARCHAR}
</if>
</if>