这个问题其实之前遇到过,但是当时没有记录下来,昨天又遇到了,正好记一下。
昨天的场景如下:
select
column
from table
where id>0
<if test="status == '1'">
and condition1
</if>
<if test="status == '2'">
and condition2
</if>
在做查询的时候使用if来组装条件,if里的条件是字符串的对比结果,但是当status="1"的时候condition1却无法生效。
这个对比出错的时候,choose when标签也遇到同样的问题。
最后的解决方案是:
1、外包用单引号,对比的字符串用双引号。
<if test='status == "1"'>
这样就能通过判断。
2、使用toString()方法.
<if test="status == '1'.toString()">
这个方法据说也可以使用,但我还没有尝试。