2011-08-25 52 views
0

我正在使用IBatis for Java(ibatis2-2.3.4)我有一個我打電話的過程,它需要1 IN param和4 OUT params。我在IBatis映射文件中配置該爲這樣的:使用IBatis for Java將多個輸出參數映射到目標對象

<procedure id="GENERATE_FILES" parameterMap="GENERATE_FILES_MAP"> 
    { call PAUL.GENERATE_FILES (?, ?, ?, ?, ?) } 
</procedure> 

我想用4個OUT參數,在我的映射文件創建我的目標對象。取而代之的是基於下面的配置,OUT對象只是在Map中設置的,我需要在我的Java代碼中創建目標對象。

<parameterMap id="GENERATE_FILES_MAP" class="java.util.Map"> 
    <parameter property="ID" jdbcType="NUMERIC" javaType="java.lang.Long" mode="IN" /> 
    <parameter property="CODE" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT" /> 
    <parameter property="NAME" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT" /> 
    <parameter property="CREATE_DT" jdbcType="DATE" javaType="java.util.Date" mode="OUT"/> 
    <parameter property="LINK_DT" jdbcType="DATE" javaType="java.util.Date" mode="OUT"/> 
</parameterMap> 

所以 - 任何人任何想法如何,我可以用這4個OUT PARAMS映射文件中創建我的目標對象?

謝謝, 保羅。

回答

0

而不是使用java.util.Map作爲傳遞給參數的類映射您可以使用具有您需要的五個屬性的JavaBean;例如,你可以有:

public class MyClass { 
    private long id; 
    private String code; 
    private String name; 
    private Date createDate; 
    private Date linkDate; 

    // getters and setters.... 
} 

,然後用它在你的parameterMap的:

<parameterMap id="GENERATE_FILES_MAP" class="MyClass"> 
    <parameter property="id" jdbcType="NUMERIC" mode="IN" /> 
    <parameter property="code" jdbcType="VARCHAR" mode="OUT" /> 
    <parameter property="name" jdbcType="VARCHAR" mode="OUT" /> 
    <parameter property="createDate" jdbcType="DATE" mode="OUT"/> 
    <parameter property="linkDate" jdbcType="DATE" mode="OUT"/> 
</parameterMap> 

所以,當你的SqlMapClient您將使用queryForObject()方法調用的過程中,您將通過一個實例你的JavaBean與它的id屬性valorized並且將具有查詢所設置的其他屬性。