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



假设我有两个类要映射。我在org.mapstruct@Mapper中使用了两种方法

//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注释?

也许可以做得更好,但这是一个更好的解决方案。

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

最新更新