【问题标题】:Dozer, how to map from java.util.Map to complex type?推土机,如何从 java.util.Map 映射到复杂类型?
【发布时间】:2012-11-15 10:44:58
【问题描述】:

我想从 java.util.Map 映射到复杂类型,我们称之为 Abc。

<mapping>
  <class-a>java.util.Map</class-a>
  <class-b bean-factory="xyz.AbcBeanFactory" factory-bean-id="AbcBeanFactory">
    xyz.Abc
  </class-b>
  <field>
    <a>Name</a>
    <b>companyName</b>
  </field>
</mapping>

这样我得到了这个错误(这是可以理解的): org.dozer.MappingException: 在类(接口 java.util.Map)中找不到字段(名称)的读取或写入方法

好的,我如何从具有键“名称”的条目的 java.util.Map 映射?我是否必须创建一个包含该 java.util.Map 的包装器对象并为该映射中我要映射的每个条目提供 getter/setter?

【问题讨论】:

    标签: getter dozer complextype map


    【解决方案1】:

    您可以找到映射地图in the Dozer documentation 的详细信息。您需要提供密钥而不是普通字段。这是一个例子:

    Abc 类:

    package com.test;
    
    public class Abc {
        private String companyName;
        private String companyAddress;
    
        public String getCompanyName() {
            return companyName;
        }
    
        public void setCompanyName(String companyName) {
            this.companyName = companyName;
        }
    
        public String getCompanyAddress() {
            return companyAddress;
        }
    
        public void setCompanyAddress(String companyAddress) {
            this.companyAddress = companyAddress;
        }
    }
    

    映射文件:

    <mapping>
        <class-a>java.util.Map</class-a>
        <class-b>com.test.Abc</class-b>
        <field>
            <a key="name">this</a>
            <b>companyName</b>
        </field>
        <field>
            <a key="address">this</a>
            <b>companyAddress</b>
        </field>
    </mapping>
    

    测试代码:

    Map<String, String> map = new HashMap<String, String>();
    map.put("name", "Company Inc.");
    map.put("address", "XYZ Commercial Street");
    
    Abc destObject =  dozerMapper.map(map, Abc.class);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      相关资源
      最近更新 更多