0

ドーザーでデータをマッピングするための助けとヒントが必要です。

次の状況が存在します。

  • サービス層から文字列 [ ] [ ] を取得しています。
    • 最初の [ ] は行を表します
    • 2 番目の [ ] は列を表します

参考:このデータはリクエストパラメータ「table」に依存します。

// exemplary service call
String[] [] result = service.getData (String table);
String[] [] result = service.getData (Enum table);

パラメータ テーブルによっては、別の宛先エンティティを使用する必要があります。

例 :

  • パラメータ「table_a」の文字列[][]は、宛先オブジェクト「com.foo.TableA」を使用する必要があります
  • パラメータ「table_b」の文字列[][]は、宛先オブジェクト「com.bar.TableB」を使用する必要があります

サービス層は変更できません。レイヤーは常にこのデータ構造を結果として返します。

私の問題は、この状況の良い出発点がないことです。

最初の [] を反復する必要があり、次にパラメーター table に依存するため、マッピングを行う必要があります。

// useful way?
List<com.foo.TableA> mappedResult = new ArrayList<com.foo.TableA>();
for (int i = 0; i < result.size ; i++) {
    String[] rowData = result[i];
    mappedResult.add(mapper.map(rowData; com.foo.TableA.class));
}


// mapping.xml
<mappings>
  <mapping>
      <class-a>how to configure String[] ?  </class-a>
      <class-b> com.foo.TableA </class-b>

      <field>
          <a>src[0] </a>  // 1st column
          <b>column_id</b>
      </field>
  <mapping>
</mappings>

どんなヒントでも大歓迎です!

前もって感謝します

4

1 に答える 1

0

文字列配列からデータにアクセスするために、ラッパーを使用しました

public class RowDataWrapper {

    private final row[];
    public RowDataWrapper (String[] row) {
        this.row=row;
    }

}

および mapping.xml 内でのその使用法

<mappings>
  <mapping>
      <class-a>foo.bar.RowDataWrapper</class-a>
      <class-b>com.foo.TableA</class-b>

      <field>
          <a>row[0] </a>  // 1st column
          <b>column_id</b>
      </field>
  <mapping>
</mappings>
于 2013-04-15T10:44:41.343 に答える