Mybatis的<if>和<choose>的区别 以及“=”判断

       在项目中xml文件经常会遇到在判断等于某个值时加什么条件不等于某个值的时候加什么条件,比如下面这个例子:

     
            AND T.NAME = #{NAME,jdbcType=VARCHAR}
     

    name  == null
">
           ORDER BY NAME,ID
   

   

      正确很好的写法需要引入标签

 
        test=" name != null">
          AND T.NAME = #{NAME,jdbcType=VARCHAR}
     

     
        ORDER BY T.PRODUCT_TYPE_CODE, T.SORT DESC, T.CREATE_TIME
     

 第一种错误写法导致的结果就是不会去做任何判断即使name不为空。为什么只能用标签,源码还没有研究,或者我这个例子本身就有问题现在记录下来,在后续的更新中我会再次总结一下这个问题。

2.

         

 
    0 ]]>  
 
 
 
    0 ]]>  
 

     判断 newsImage == 'y' 时,有人认为成功,但实际上是不成功的,需要改为  newsImage == 'y'.toString()方可成功,原因具体没

有细入研究,根据实际使用推测应该是 “等于” 在java中是个比较复杂问题,涉及的“等于”有可能是变量地址相等,或者是变量值内

容相等,在XML文件中简单的 == 在经过MyBatis处理后无法判断是哪种类型的“相等”,所以加.toString()做强制转换操作,MyBatis

就知道是值内容的比较,当然就成功了;注意这个常量不限于数字,对于字母,如 'y' 同样需要加上 .toString()方可成功。

你可能感兴趣的:(Mybatis)