且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Dozer,如何从java.util.Map映射到复杂类型?

更新时间:2022-03-01 18:23:50

您可以在Dozer文档中找到映射的详细信息>。你需要提供一个不是一个普通字段的键。这是一个例子:

You can find details for mapping a Map in the Dozer documentation. You need to provide a key not a plain field. Here is an example:

类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);