MyBatis 判断条件为等于的问题
(iftest=type==1.toString ()xxxif
标签:  分类:
2015-06-28 21:56  22042⼈阅读 (6)
版权声明:本⽂为博主原创⽂章,未经博主允许不得转载。
在⽤MyBatis 操作的时候相信很多⼈都⽤到,当在判断null, ⼤于,⼤于等于,⼩于,⼩于等于,不等于时估计很多都⽤到,⽐较容易实现了,这⾥就省略了,但唯独判断条件为等于时估计蛮多⼈遇到坑了, 俺在这个问题上坑了差不多⼀天,于是把这个实验总结并简要记录⼀下;当MyBatis 判断条件为等于的时候,常量需要加 .toString() 来转换,这种⽅法是稳定的,推荐使⽤,⽐如:
其中判断 newsImage == '1' 时,⼈为认为成功,但实际上是不成功的,需要改为  newsImage == '1'.toString()⽅可成功,原因具体没有细⼊研究,根据实际使⽤推测应该是 “等于” 在java 中是个⽐较复杂问题,涉及的“等于”有可能是变量地址相等,或者是变量值内容相等,在XML ⽂件中简单的 == 在经过MyBatis 处理后⽆法判断是哪种类型的“相等”,所以加 .toString()做强制转换操作,MyBatis 就知道是值内容的⽐较,当然就成功了; 注意这个常量不限于数字,对于字母,如 'y' 同样需要加上  .toString()⽅可成
功,如下:
那给变量加  .toString() 可以吗?这个是错误的,⾄少实际在所使⽤的myBatis 版本( mybatis-3.2.5.jar, mybatis-spring-1.2.1.jar )是不可以,以后版本不知道,这应该是在经过 myBatis 时,影响到其转换操作,故出现错误,如下是错误的:
既然是值内容的⽐较,我们⾃然联想到 Java 的  equals , equalsIgnoreCase  关键字,⽤这个可以吗? 实际测试过, 有时成功,有时不成功(有可能跟我的机⼦和我使⽤的Java 环境的原因), 很不稳定, 不推荐使⽤,所以如下是不稳定的:
Java (77) 管理者/开发者(122)
[html]
01. <!-- 正确的,稳定,推荐使⽤ -->  02. <if  test ="newsImage != null and newsImage == '1'.toString()">  03.    <![CDATA[ and len(newsImage) > 0 ]]>  04. </if>
[html]
equals不等于
01. <!-- 正确的,稳定,推荐使⽤ -->  02. <if  test ="newsImage != null and newsImage == 'y'.toString()">  03.    <![CDATA[ and len(newsImage) > 0 ]]>  04. </if>
[html]
01. <!-- 错误的 -->  02. <if  test ="newsImage != null String() == 'y'">  03.    <![CDATA[ and len(newsImage) > 0 ]]>  04. </if>
[html]
01. <!--有时成功,有时不成功,不推荐使⽤-->  02. <if  test ="newsImage != null and newsImage.equal('y')">  03.    <![CDATA[ and len(newsImage) > 0 ]]>  04. </if>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。