使用 IBatis for Java 将多个输出参数映射到目标对象

发布于 2024-12-01 08:38:31 字数 1038 浏览 1 评论 0原文

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

谢谢, 保罗.

I am using IBatis for Java (ibatis2-2.3.4) I have a procedure which I am calling which takes 1 IN param and 4 OUT params. I have configured this in my IBatis mapping file as such:

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

I would like to use the 4 OUT params to create my target object in my mapping file. Instead based on the configuration below the OUT objects just get set in the Map and I need to create the target object in my Java code.

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

So - anybody any ideas how I could use these 4 OUT params to create my target object within the mapping file?

Thanks,
Paul.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

熊抱啵儿 2024-12-08 08:38:31

您可以使用具有所需五个属性的 JavaBean,而不是使用 java.util.Map 作为传递给参数 Map 的类;例如,您可以:

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属性已验证,并且将具有由查询确定的其他属性。

Instead of using a java.util.Map as the class passed to the parameters Map you can use a JavaBean with the five properties you need; for example you can have:

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

  // getters and setters....
}

And then use it in your 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>

So, when with you SqlMapClient you will call the procedure using the queryForObject() method you will pass an instance of you JavaBean to it with the id property valorized and will have the other properties valorized by the query.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文