mybatis中if标签判断字符串相等

作者: Java_Pro | 来源:发表于2019-06-12 09:11 被阅读3次

    今日按需求在mapper.xml中修改完一条sql的条件,感觉很轻松,如下所示:

    <if test="companyId != null and companyId !='' ">  
        <if test="companyFlag == '1'">   
            AND COMPANY_ID = #{companyId,jdbcType=VARCHAR}  
        </if>  
        <if test="companyFlag == '0'">   
            AND COMPANY_ID != #{companyId,jdbcType=VARCHAR}  
        </if> 
    </if>
    

    结果sql执行的结果却让我轻松不起来,明明companyId和companyFlag这两个字段不为空,但是在打印的日志sql中却没有这个条件,将上述sql改为如下所示:

    <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>
    

    执行sql后发现日志将and 1 = 1 打印出来了,还是没有COMPANY_ID这个条件,于是意识到是companyFlag的判断条件出了问题,在网上一顿搜索后,发现了说明:
    mybatis 映射文件中,if标签判断字符串相等
    两种方式:因为mybatis映射文件,是使用的ognl表达式,所以在判断字符串sex变量是否是字符串Y的时候使用

    <test="sex=='Y'.toString()">或者<test = 'sex== "Y"'>
    

    将自己的sql改为:

    <if test="companyId != null and companyId !='' ">  
        <if test="companyFlag == '1'.toString() ">   
            AND COMPANY_ID = #{companyId,jdbcType=VARCHAR}  
        </if>  
        <if test="companyFlag == '0'.toString() ">   
            AND COMPANY_ID != #{companyId,jdbcType=VARCHAR}  
        </if> 
    </if>
    

    再次调用sql,则条件正常可用了。


    作者:chengsi101
    来源:CSDN
    原文:https://blog.csdn.net/chengsi101/article/details/78804224
    版权声明:本文为博主原创文章,转载请附上博文链接!

    相关文章

      网友评论

        本文标题:mybatis中if标签判断字符串相等

        本文链接:https://www.haomeiwen.com/subject/yhxkfctx.html