比较简单 但是很烦人加入sql的逻辑(伪代码)是:if(a!=b){
  select sql1;
}else{
  select sql2;
}翻译到sqlmap中,该怎么写呢?只知道一个可以判断相等的节点的写法,
<isNotEqual property="a" compareValue="b">
sql1
</isNotEqual>
这个是判断不等于的,可是"不等于"的反面不是"等于"啊,还可能取到其他值,肯定不能简单写成
<isEqual property="select" compareValue="">
sql2
</isEqual>
这样的形式啊急!急!急!急!急!急!

解决方案 »

  1.   

    select from 
     
      <isEqual property="type" compareValue="0">
      a 
      </isEqual>
      <isEqual property="type" compareValue="1">
      b   </isEqual>
     
      where id = #id#
      

  2.   

    <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>
      

  3.   

    如果二楼的写法,你看不懂那我也不知道怎么帮你了。解释一下吧<isEqual property="type" compareValue="0">

    </isEqual>相当于Java中
    if(type.equals("0")){
       str += "a"
    }再不懂,没办法了
      

  4.   

    回楼上 
    我指的是当a不等于b的方面这种情况发生的时候 
    a!=b的反面
    不是a=b啊你俩写成<isEqual property="type" compareValue="0">
    a  
    </isEqual>
    这个逻辑漏掉了很多种a为其他值得情况!
      

  5.   

    回楼上  
    我指的是 "当a不等于b的反面" 这种情况发生的时候  
    a!=b的反面
    不是a=b啊你俩写成<isEqual property="type" compareValue="0">
    a   
    </isEqual>
    这个逻辑漏掉了很多种a为其他值的情况!逻辑有问题,就像
    白的反面 只是 不白
    不能说成黑啊
      

  6.   

    你逻辑关系没学好,,,在这个里面,你的else里面的语句,就是A Equal B,,
      

  7.   

    其实你被自己的伪代码迷惑了。if(a==b){
      select sql2;
    }else{
      select sql1;
    }
    应该跟你的伪代码是等效的吧。
    翻译成ibatis就是<isEqual property="a" compareValue="b">
    sql2
    </isEqual>
    <isNotEqual property="a" compareValue="b">
    sql1
    </isNotEqual>
      

  8.   

    一元条件元素 
    一元条件元素检查属性的状态是否符合特定的条件。 
      一元条件元素的属性: 
    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传个自己定义的参数进去?
      

  9.   


    你的伪代码是
    if(a!=b){
      select sql1;
    }else{
      select sql2;
    }
    按你的意思这样写也是对的
    if(a==b){
      select sql2;
    }else{
      select sql1;
    }好了,你说这种情况漏掉了很多种a为其他值的情况
    那你的伪代码怎么能是if..else..呢?
    白的反面是不白,不能说成黑,那也有可能是红黄蓝绿
    你是不是该把你的伪代码改成switch语句
      

  10.   


    你的伪代码是
    if(a!=b){
      select sql1;
    }else{
      select sql2;
    }
    按你的意思这样写也是对的
    if(a==b){
      select sql2;
    }else{
      select sql1;
    }好了,你说这种情况漏掉了很多种a为其他值的情况
    那你的伪代码怎么能是if..else..呢?
    白的反面是不白,不能说成黑,那也有可能是红黄蓝绿
    你是不是该把你的伪代码改成switch语句大家这么热心帮,帮到白眼狼了啊