Mybatis中if标签如下写if判断失效
//失效
//<choose/><when>标签同样 有其问题
<if test="flag == '1'">
...
</if>
<if test="flag == '2'">
...
</if>
原因:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,'0’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。
解决办法如下
1.加.toString
<if test="flag == '1'.toString() ">
...
</if>
<if test="flag == '2'.toString() ">
...
</if>
2.单引号 换成双引号
<if test='flag == "1" '>
...
</if>
<if test='flag == "2" '>
...
</if>
3.java 传值为 数值类型 Integer int之类的
<if test="flag == 1 ">
...
</if>
<if test="flag == 2 ">
...
</if>
博客内容讲述了在Mybatis中遇到if标签条件判断失效的问题,原因是OGNL表达式解析时,'0'被解析为字符导致与字符串比较不等。解决方案包括:1.在条件表达式中调用toString()方法;2.将单引号改为双引号;3.确保Java传值为数值类型。
1269

被折叠的 条评论
为什么被折叠?



