使用org.mapstruct.Mapper映射两个对象的更好方法

时间:2020-03-10 10:40:34

标签: java mapstruct

假设我要映射两个类。我设法通过@Mapper

org.mapstruct中的两种方法来做到这一点
//copy all fields with same name from client.getPerson() with partialUpridClientInfoFromPerson
//than add some additional fields
default UpridClientInfo toUpridClientInfo(AccountLevel level, Client client) {
    UpridClientInfo result = partialUpridClientInfoFromPerson(client.getPerson());
    result.setAccountLevel(level);
    result.setBankCode(client.getBank().getCode());
    return result;
}

UpridClientInfo partialUpridClientInfoFromPerson(Person person);

有没有更好的方法?可能仅使用@Mapping和/或@Named批注?

1 个答案:

答案 0 :(得分:1)

也许有可能做得更好,但这是更好的解决方案。

default UpridClientInfo toUpridClientInfo(AccountLevel level, Client client) {
    return toUpridClientInfo(level, client.getPerson(), client.getBank());
}

@Mapping(source = "level", target = "accountLevel")
@Mapping(source = "bank.code", target = "bankCode")
UpridClientInfo toUpridClientInfo(AccountLevel level, Person person, Bank bank);
相关问题