将数据结构String [] []映射到模型类的提示

时间:2013-03-11 14:35:17

标签: dozer

我需要您的帮助以及使用推土机映射数据的提示。

存在以下情况:

  • 从服务层获取String [] []。
    • first []代表行
    • second []表示列

fyi:此数据取决于请求参数“table”。

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

根据参数表,必须使用另一个目标实体。

示例:

  • 参数“table_a”的String [] []应使用目标对象“com.foo.TableA”
  • 参数“table_b”的String [] []应使用目标对象“com.bar.TableB”

无法更改服务图层。该层始终返回此数据结构。

我的问题是,我对这种情况没有好的起点。

我必须迭代第一个[],然后依赖于参数表,必须进行映射。

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

欢迎任何提示!

提前谢谢

1 个答案:

答案 0 :(得分:0)

为了从String-array访问数据,我使用了一个包装器

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>