mybatis gt lt,mybatis >
00-1010IF和choose的区别以及“=”的正确判断需要引入choose标签!-错误的写法- Mybatis选择选择和条件if用法选择用法if用法
00-1010在项目中,xml文件经常会遇到判断等于某个值时加什么条件,不等于某个值时加什么条件。
比如下面这个例子:
if test= name!=null 和T.NAME=#{NAME,JDBC type=VARCHAR }/ifif test= NAME==null ORDER BY NAME,ID/if
目录
选择何时测试= name!=null 和t.name=# {name,JDBC type=varchar }/当other order by t . product _ type _ code,t.sortdesc,t.create _ time/other/choose第一个写错的结果是,即使名称不为空也不会做出判断。
为什么只能用choose标签?源代码没研究过,或者我举的例子有问题。现在记录下来,我会在后续更新中再次总结这个问题。
if和choose的区别及“=”判断
if test= newimage!=null和newsImage== y ![CDATA[and len(newimage)0]]/if!-正确、稳定、推荐- if test=newsImage!=null且newsImage==y 。toString()![CDATA [and len (newsage) 0]]/if在判断newsage== y 时,有人认为是成功的,其实是不成功的。需要改成newsage== y 。tostring()成功。
具体原因没有详细研究过。推测应该是“相等”是java中一个复杂的问题。所涉及的“相等”可能是变量的地址相等,也可能是变量的内容相等。XML文件中的Simple==经过MyBatis处理后无法判断“等于”是哪种类型,所以添加。toString()做强制转换,MyBatis就知道是值的内容的比较。
请注意,该常数不限于数字。对于像“y”这样的字母。toString()也需要成功。
正确很好的写法需要引入choose标签
00-1010选择when test= show type==1 if null(k . fname, unknown) aspro _ name,/when test= show type==2 if null(e . fname, unknown )作为business_name,/when test= show type==3 if null(f . fname, unknown )作为area _ name,/when test= show type==4 if null(h . fname, unknown )作为sale_name,/when other if null(j . f _ pjqd _ name
!--错误的写法--
if test=businessName!=null和businessName!= 和e . fname=# { business name }/if if test= arename!=null和areaName!= 和f . fname=# { arename }/如果以上是个人经验,希望它能给你一个参考,也希望你能支持盛行的它。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。