比较简单 但是很烦人加入sql的逻辑(伪代码)是:if(a!=b){
select sql1;
}else{
select sql2;
}翻译到sqlmap中,该怎么写呢?只知道一个可以判断相等的节点的写法,
<isNotEqual property="a" compareValue="b">
sql1
</isNotEqual>
这个是判断不等于的,可是"不等于"的反面不是"等于"啊,还可能取到其他值,肯定不能简单写成
<isEqual property="select" compareValue="">
sql2
</isEqual>
这样的形式啊急!急!急!急!急!急!
select sql1;
}else{
select sql2;
}翻译到sqlmap中,该怎么写呢?只知道一个可以判断相等的节点的写法,
<isNotEqual property="a" compareValue="b">
sql1
</isNotEqual>
这个是判断不等于的,可是"不等于"的反面不是"等于"啊,还可能取到其他值,肯定不能简单写成
<isEqual property="select" compareValue="">
sql2
</isEqual>
这样的形式啊急!急!急!急!急!急!
<isEqual property="type" compareValue="0">
a
</isEqual>
<isEqual property="type" compareValue="1">
b </isEqual>
where id = #id#
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>
a
</isEqual>相当于Java中
if(type.equals("0")){
str += "a"
}再不懂,没办法了
我指的是当a不等于b的方面这种情况发生的时候
a!=b的反面
不是a=b啊你俩写成<isEqual property="type" compareValue="0">
a
</isEqual>
这个逻辑漏掉了很多种a为其他值得情况!
我指的是 "当a不等于b的反面" 这种情况发生的时候
a!=b的反面
不是a=b啊你俩写成<isEqual property="type" compareValue="0">
a
</isEqual>
这个逻辑漏掉了很多种a为其他值的情况!逻辑有问题,就像
白的反面 只是 不白
不能说成黑啊
select sql2;
}else{
select sql1;
}
应该跟你的伪代码是等效的吧。
翻译成ibatis就是<isEqual property="a" compareValue="b">
sql2
</isEqual>
<isNotEqual property="a" compareValue="b">
sql1
</isNotEqual>
一元条件元素检查属性的状态是否符合特定的条件。
一元条件元素的属性:
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传个自己定义的参数进去?
你的伪代码是
if(a!=b){
select sql1;
}else{
select sql2;
}
按你的意思这样写也是对的
if(a==b){
select sql2;
}else{
select sql1;
}好了,你说这种情况漏掉了很多种a为其他值的情况
那你的伪代码怎么能是if..else..呢?
白的反面是不白,不能说成黑,那也有可能是红黄蓝绿
你是不是该把你的伪代码改成switch语句
你的伪代码是
if(a!=b){
select sql1;
}else{
select sql2;
}
按你的意思这样写也是对的
if(a==b){
select sql2;
}else{
select sql1;
}好了,你说这种情况漏掉了很多种a为其他值的情况
那你的伪代码怎么能是if..else..呢?
白的反面是不白,不能说成黑,那也有可能是红黄蓝绿
你是不是该把你的伪代码改成switch语句大家这么热心帮,帮到白眼狼了啊