2012-02-08 41 views
0

我想知道如何在mybatis xml中描述帶有可選參數的存儲過程調用。 例如:帶可選參數的MyBatis存儲過程調用

DAO

public List getMethod1(Object arg1) { 
     Map<String, Object> map = new HashMap<String, Object>(); 
     map.put("arg1", arg1); 
     return selectList("myBatisSelect", map); 
} 

public List getMethod1(Object arg1, Object arg2) { 
     Map<String, Object> map = new HashMap<String, Object>(); 
     map.put("arg1", arg1); 
     map.put("arg2", arg2); 
     return selectList("myBatisSelect", map); 
} 

XML

<select id="myBatisSelect" 
      parameterType="map" 
      resultType="MyResultObject"> 
      CALL sql_stored_procedure 
      (
       @arg1= #{arg1} 
       <!-- How to add optional parameter here??--> 
      )  

    </select> 

回答

1

你可以使用條件邏輯來動態生成的SQL。

<select id="myBatisSelect" 
     parameterType="map" 
     resultType="MyResultObject"> 
     CALL sql_stored_procedure 
     (
      @arg1= #{arg1} 
      <if test="arg2 != null"> 
        ,#{arg2} 
      </if> 
     )  

</select> 

MyBatis3 User Guide具有更多的信息。