问题描述
情况如下:select*fromtablet<dynamicprepend="where"><isNotEmptyprepend="and"property="a">t.A=#a#</isNotEmpty><isNotEmptyprepend="and"property="b">t.B=#b#</isNotEmpty><isNotEmptyprepend="and"property="a">t.C=3</isNotEmpty><isNotEmptyprepend="and"property="b">t.C=3</isNotEmpty></dynamic>红色的部分要表达的意思就是如果a或着b不会空就把t.C=3这个条件加上,当然我这样写也可以,如果a和b都不为空,无非就是两个t.C=3就是:select*fromtabletwheret.A=#a#andt.B=#b#andt.C=3andt.C=3这样倒是不影响查询,不过,是不是有其它办法来解决这个问题(a或着b不会空就把t.C=3这个条件加上)
解决方案
解决方案二:
再加个c参数,c=a+b<isNotEmptyprepend="and"property="c">t.C=3</isNotEmpty>
解决方案三:
再加一个参数c,根据a,b的是否为空来设定c的值,这样是可以的,不过,要在参数传进来的之前做好对c的值的设定的判断。我想问的是ibatis是不是有这样的逻辑条件的判断,可以一次判断两个条件(就像if(a!=null||b!=null){c=3;}这样的),而不是只能判断一个值的空或不空。
解决方案四:
1楼已回答你的问题,在外围java再加个参数c,传给ibatis
解决方案五:
<isNotEmptyprepend="and"property="a"removeFirstPrepend="true">t.C=3</isNotEmpty><isNotEmptyprepend="and"property="b"removeFirstPrepend="true">t.C=3</isNotEmpty>
解决方案六:
应该ibatis目前是不支持if(a!=null||b!=null){c=3;}这样的),希望ibatis3.0可以实现。
解决方案七:
用ibatis3,3以后支持类似el表达式,比如<iftest="a!=null||b!=null">t.C=3</if>
解决方案八:
ibatis的条件是可以嵌套的。
解决方案九:
该回复于2011-03-03 14:40:57被版主删除
解决方案十:
(<isNotEmptyprepend="and"property="a">t.C=3</isNotEmpty><isNotEmptyprepend="or"property="b">t.C=3</isNotEmpty>)试试了