使用IBatis for Java将多个params映射到目标对象

时间:2011-08-25 09:48:34

标签: ibatis

我正在使用IBatis for Java(ibatis2-2.3.4)我有一个我正在调用的过程,它需要1 IN个参数和4个OUT参数。我在我的IBatis映射文件中配置了这个:

<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参数在映射文件中创建我的目标对象?

谢谢, 保罗。

1 个答案:

答案 0 :(得分:0)

不使用java.util.Map作为传递给参数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()方法调用该过程,您将使用id属性valorized将JavaBean的实例传递给它,并且将具有由查询赋值的其他属性。