求助:iBatis中的sqlmap里if else逻辑判断的写法

pangpangxixi 2011-07-14 08:42:10
比较简单 但是很烦人

加入sql的逻辑(伪代码)是:

if(a!=b){
select sql1;
}else{
select sql2;
}

翻译到sqlmap中,该怎么写呢?

只知道一个可以判断相等的节点的写法,
<isNotEqual property="a" compareValue="b">
sql1
</isNotEqual>
这个是判断不等于的,可是"不等于"的反面不是"等于"啊,还可能取到其他值,肯定不能简单写成
<isEqual property="select" compareValue="">
sql2
</isEqual>
这样的形式啊

急!急!急!急!急!急!
...全文
40993 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
-騎豬看海- 2013-09-20
  • 打赏
  • 举报
回复
引用 13 楼 m751075306 的回复:
[quote=引用 7 楼 pangpangxixi 的回复:] 回楼上 我指的是 "当a不等于b的反面" 这种情况发生的时候 a!=b的反面 不是a=b啊 你俩写成<isEqual property="type" compareValue="0"> a </isEqual> 这个逻辑漏掉了很多种a为其他值的情况! 逻辑有问题,就像 白的反面 只是 不白 不能说成黑啊
你的伪代码是 if(a!=b){ select sql1; }else{ select sql2; } 按你的意思这样写也是对的 if(a==b){ select sql2; }else{ select sql1; } 好了,你说这种情况漏掉了很多种a为其他值的情况 那你的伪代码怎么能是if..else..呢? 白的反面是不白,不能说成黑,那也有可能是红黄蓝绿 你是不是该把你的伪代码改成switch语句[/quote]大家这么热心帮,帮到白眼狼了啊
神探亨特毛 2013-09-18
  • 打赏
  • 举报
回复
引用 7 楼 pangpangxixi 的回复:
回楼上 我指的是 "当a不等于b的反面" 这种情况发生的时候 a!=b的反面 不是a=b啊 你俩写成<isEqual property="type" compareValue="0"> a </isEqual> 这个逻辑漏掉了很多种a为其他值的情况! 逻辑有问题,就像 白的反面 只是 不白 不能说成黑啊
你的伪代码是 if(a!=b){ select sql1; }else{ select sql2; } 按你的意思这样写也是对的 if(a==b){ select sql2; }else{ select sql1; } 好了,你说这种情况漏掉了很多种a为其他值的情况 那你的伪代码怎么能是if..else..呢? 白的反面是不白,不能说成黑,那也有可能是红黄蓝绿 你是不是该把你的伪代码改成switch语句
forgetsam 2013-09-18
  • 打赏
  • 举报
回复
一元条件元素 一元条件元素检查属性的状态是否符合特定的条件。 一元条件元素的属性: prepend - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选) property - 被比较的属性(必选) <isPropertyAvailable> 检查是否存在该属性(存在 parameter bean 的属性) 。 <isNotPropertyAvailable> 检查是否不存在该属性(不存在 parameter bean 的属性) 。 <isNull> 检查属性是否为 null。 <isNotNull> 检查属性是否不为 null。 <isEmpty> 检查 Collection.size()的值,属性的 String 或 String.valueOf()值, 是否为 null或空( “”或size() < 1) 。 <isNotEmpty> 检查 Collection.size()的值,属性的 String 或 String.valueOf()值, 是否不为 null 或不为空( “”或 size() > 0) 。 例子: <isNotEmpty prepend=”AND” property=”firstName” > FIRST_NAME=#firstName# </isNotEmpty> 人家给你A和B,你就只会传个A和B,对吧? 你就不能自己判断一下A和B,给ibatis传个自己定义的参数进去?
good_sun 2013-09-18
  • 打赏
  • 举报
回复
擦,楼上这一堆人就这逻辑还写代码呢。。。
yeahking1981 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 pangpangxixi 的回复:]
比较简单 但是很烦人

加入sql的逻辑(伪代码)是:

if(a!=b){
select sql1;
}else{
select sql2;
}

翻译到sqlmap中,该怎么写呢?

只知道一个可以判断相等的节点的写法,
<isNotEqual property="a" compareValue="b">
sql1
</isNotEqual>
这个是判断……
[/Quote]
其实你被自己的伪代码迷惑了。

if(a==b){
select sql2;
}else{
select sql1;
}
应该跟你的伪代码是等效的吧。
翻译成ibatis就是

<isEqual property="a" compareValue="b">
sql2
</isEqual>
<isNotEqual property="a" compareValue="b">
sql1
</isNotEqual>
pangpangxixi 2011-07-15
  • 打赏
  • 举报
回复
回楼上
我指的是 "当a不等于b的反面" 这种情况发生的时候
a!=b的反面
不是a=b啊

你俩写成<isEqual property="type" compareValue="0">
a
</isEqual>
这个逻辑漏掉了很多种a为其他值的情况!

逻辑有问题,就像
白的反面 只是 不白
不能说成黑啊
pangpangxixi 2011-07-15
  • 打赏
  • 举报
回复
回楼上
我指的是当a不等于b的方面这种情况发生的时候
a!=b的反面
不是a=b啊

你俩写成<isEqual property="type" compareValue="0">
a
</isEqual>
这个逻辑漏掉了很多种a为其他值得情况!
zl3450341 2011-07-15
  • 打赏
  • 举报
回复
如果二楼的写法,你看不懂。。。那我也不知道怎么帮你了。

解释一下吧

<isEqual property="type" compareValue="0">
a
</isEqual>

相当于Java中
if(type.equals("0")){
str += "a"
}

再不懂,没办法了
pangpangxixi 2011-07-15
  • 打赏
  • 举报
回复
自顶 2楼的看不懂!
yexiongMYBH 2011-07-15
  • 打赏
  • 举报
回复
你逻辑关系没学好,,,在这个里面,你的else里面的语句,就是A Equal B,,
pangpangxixi 2011-07-15
  • 打赏
  • 举报
回复
再次自顶 懂的帮!
IT淡淡 2011-07-14
  • 打赏
  • 举报
回复
路过。
xianaofei 2011-07-14
  • 打赏
  • 举报
回复
<isEqual property="type" compareValue="0">
type也是你传递的一个参数

Map<String, String> paras = new HashMap<String, String>();

paras.put("type", type);
paras.put("id", id);
<select id="select" parameterClass="java.util.Map">

select from

<isEqual property="type" compareValue="0">
a
</isEqual>
<isEqual property="type" compareValue="1">
b
</isEqual>

where id = #id#

</select>
xianaofei 2011-07-14
  • 打赏
  • 举报
回复
select from

<isEqual property="type" compareValue="0">
a
</isEqual>
<isEqual property="type" compareValue="1">
b </isEqual>

where id = #id#

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧