MyBatis test表达式中判断相等无效

踩坑现场

想通过传入一个remarkflag标志,当remarkflag为"0"时,查询数据库中remark列为空字符串的行,当remarkflag为"1"时,查询数据库中某字段为非空字符串的行。代码如下:

        <if test="remarkflag != '' and remarkflag == '0'">
          AND remark =''
        </if>
        <if test="remarkflag != '' and remarkflag == '1'">
          AND remark !=''
        </if>

结果不论remarkflag设为"0"还是"1",上面两个判断均不成立。

问题处理

查了许多文档,发现当判断的单引号内只有一个字符时,会被识别为Java语言中的char类型,上述remarkflag==‘0’,左边是字符串,右边是字符型,所以不成立,同理remarkflag == '1’也不成立。

解决

强制转换下类型后,问题解决:

        <if test="remarkflag != '' and remarkflag == '0'.toString()">
          AND remark =''
        </if>
        <if test="remarkflag != '' and remarkflag == '1'.toString()">
          AND remark !=''
        </if>
发布了326 篇原创文章 · 获赞 238 · 访问量 52万+

猜你喜欢

转载自blog.csdn.net/woshisangsang/article/details/103557363