您的位置:首页 > 数据库

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

2016-09-30 09:11 417 查看


求助:iBatis中的sqlmap里if else逻辑判断的写法 [问题点数:100分]

不显示删除回复显示所有回复
显示星级回复显示得分回复
只显示楼主 

收藏





关注
pangpangxixi
pangpangxixi
本版等级:


结帖率:0%
楼主发表于: 2011-07-14 20: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>

这样的形式啊

急!急!急!急!急!急!

更多0分享到:

相关知识库: 深度学习 React
Native iOS 直播技术

<iframe id="iframeu1636200_0" src="http://pos.baidu.com/fcxm?rdid=1636200&dc=2&di=u1636200&dri=0&dis=0&dai=3&ps=1246x463&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1475153362522&ti=%E6%B1%82%E5%8A%A9%3AiBatis%E4%B8%AD%E7%9A%84sqlmap%E9%87%8Cif%20else%E9%80%BB%E8%BE%91%E5%88%A4%E6%96%AD%E7%9A%84%E5%86%99%E6%B3%95-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&ari=2&dbv=2&drs=3&pcs=1504x851&pss=1504x8793&cfv=0&cpl=5&chi=1&cce=true&cec=UTF-8&tlm=1475153363&rw=851&ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F370068700&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D86K1yKQ18j0pylXbdLesYolK-i5W3ttPsFYZOeOlnbDT0bS9wH1uZ7CAsU_VISgi%26wd%3D%26eqid%3Dac54cfe2000038690000000557ed0dce&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=7&col=zh-CN&cdo=-1&tcn=1475153363&qn=19c52e65dd9d892c&tt=1475153362501.863.863.864" width="200" height="22" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: content-box; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;"></iframe>

 

<iframe id="iframeu1636201_0" src="http://pos.baidu.com/fcxm?rdid=1636201&dc=2&di=u1636201&dri=0&dis=0&dai=4&ps=1246x717&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1475153362522&ti=%E6%B1%82%E5%8A%A9%3AiBatis%E4%B8%AD%E7%9A%84sqlmap%E9%87%8Cif%20else%E9%80%BB%E8%BE%91%E5%88%A4%E6%96%AD%E7%9A%84%E5%86%99%E6%B3%95-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&ari=2&dbv=2&drs=3&pcs=1504x851&pss=1504x8804&cfv=0&cpl=5&chi=1&cce=true&cec=UTF-8&tlm=1475153363&rw=851&ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F370068700&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D86K1yKQ18j0pylXbdLesYolK-i5W3ttPsFYZOeOlnbDT0bS9wH1uZ7CAsU_VISgi%26wd%3D%26eqid%3Dac54cfe2000038690000000557ed0dce&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=7&col=zh-CN&cdo=-1&tcn=1475153363&qn=4cf10647777981c0&tt=1475153362501.866.866.867" width="200" height="22" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: content-box; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;"></iframe>

 

<iframe id="iframeu1636204_0" src="http://pos.baidu.com/fcxm?rdid=1636204&dc=2&di=u1636204&dri=0&dis=0&dai=5&ps=1246x971&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1475153362522&ti=%E6%B1%82%E5%8A%A9%3AiBatis%E4%B8%AD%E7%9A%84sqlmap%E9%87%8Cif%20else%E9%80%BB%E8%BE%91%E5%88%A4%E6%96%AD%E7%9A%84%E5%86%99%E6%B3%95-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&ari=2&dbv=2&drs=3&pcs=1504x851&pss=1504x8804&cfv=0&cpl=5&chi=1&cce=true&cec=UTF-8&tlm=1475153363&rw=851&ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F370068700&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D86K1yKQ18j0pylXbdLesYolK-i5W3ttPsFYZOeOlnbDT0bS9wH1uZ7CAsU_VISgi%26wd%3D%26eqid%3Dac54cfe2000038690000000557ed0dce&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=7&col=zh-CN&cdo=-1&tcn=1475153363&qn=f05d5798bcaf7c19&tt=1475153362501.869.869.869" width="200" height="22" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: content-box; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;"></iframe>

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
回复次数:14



关注
xianaofei
xianaofei
本版等级:


#1 得分:0回复于: 2011-07-14 21:41:51

select from 

 

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

  a 

  </isEqual>

  <isEqual property="type" compareValue="1">

  b   </isEqual>

 

  where id = #id#
对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理




关注
xianaofei
xianaofei
本版等级:


#2 得分:0回复于: 2011-07-14 21:45:21

<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>
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理




关注
hansong7299
IT淡淡
本版等级:


#3 得分:0回复于: 2011-07-14 21:55:56

路过。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理




关注
pangpangxixi
pangpangxixi
本版等级:


#4 得分:0回复于: 2011-07-15 10:22:28

自顶 2楼的看不懂!
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理




关注
zl3450341
兔子党-大胡子
本版等级:



 

 

#5 得分:0回复于: 2011-07-15 10:39:19

如果二楼的写法,你看不懂。。。那我也不知道怎么帮你了。

解释一下吧

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



</isEqual>

相当于Java中

if(type.equals("0")){

   str += "a"

}

再不懂,没办法了
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理




关注
pangpangxixi
pangpangxixi
本版等级:


#6 得分:0回复于: 2011-07-15 10:47:26

回楼上 

我指的是当a不等于b的方面这种情况发生的时候 

a!=b的反面

不是a=b啊

你俩写成<isEqual property="type" compareValue="0">

a  

</isEqual>

这个逻辑漏掉了很多种a为其他值得情况!
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理




关注
pangpangxixi
pangpangxixi
本版等级:


#7 得分:0回复于: 2011-07-15 10:49:18

回楼上  

我指的是 "当a不等于b的反面" 这种情况发生的时候  

a!=b的反面

不是a=b啊

你俩写成<isEqual property="type" compareValue="0">

a   

</isEqual>

这个逻辑漏掉了很多种a为其他值的情况!

逻辑有问题,就像

白的反面 只是 不白

不能说成黑啊
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理




关注
pangpangxixi
pangpangxixi
本版等级:


#8 得分:0回复于: 2011-07-15 16:28:17

再次自顶 懂的帮!
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理




关注
yexiongMYBH
yexiongMYBH
本版等级:


#9 得分:0回复于: 2011-07-15 21:12:26

你逻辑关系没学好,,,在这个里面,你的else里面的语句,就是A Equal B,,
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理




关注
yeahking1981
yeahking1981
本版等级:


#10 得分:0回复于: 2011-08-23 10:26:25

引用楼主 pangpangxixi 的回复:

比较简单 但是很烦人

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

if(a!=b){

  select sql1;

}else{

  select sql2;

}

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

只知道一个可以判断相等的节点的写法,

<isNotEqual property="a" compareValue="b">

sql1

</isNotEqual>

这个是判断……

其实你被自己的伪代码迷惑了。

if(a==b){

  select sql2;

}else{

  select sql1;

}

应该跟你的伪代码是等效的吧。

翻译成ibatis就是

<isEqual property="a" compareValue="b">

sql2

</isEqual>

<isNotEqual property="a" compareValue="b">

sql1

</isNotEqual>
对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理




关注
good_sun
good_sun
本版等级:


#11 得分:0回复于: 2013-09-18 14:09:40

擦,楼上这一堆人就这逻辑还写代码呢。。。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理




关注
forgetsam
forgetsam
本版等级:



 

#12 得分:0回复于: 2013-09-18 14:53:15

一元条件元素 

一元条件元素检查属性的状态是否符合特定的条件。 

  一元条件元素的属性: 

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传个自己定义的参数进去?
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理




关注
m751075306
神探亨特毛
本版等级:


#13 得分:0回复于: 2013-09-18 15:03:55

引用 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语句
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理




关注
u010682529
-騎豬看海-
本版等级:


#14 得分:0回复于: 2013-09-20 00:14:12

引用 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语句
大家这么热心帮,帮到白眼狼了啊
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: