Отображение нескольких выходных параметров в целевой объект с помощью IBatis для Java - PullRequest
0 голосов
/ 25 августа 2011

Я использую IBatis для 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 просто устанавливаются на карте, и мне нужно создать целевой объект в своем коде 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 для создания моего целевого объекта в файле сопоставления?

Спасибо, Пол.

1 Ответ

0 голосов
/ 26 августа 2011

Вместо использования 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 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, а другие параметры будут оценены запросом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...