1 回答

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊
@Mapper(componentModel = "spring")
interface Mapper {
@Mappings({
@Mapping(source = "street", target = "address.street"),
@Mapping(source = "city", target = "address.city")
})
Person fromPersonDTO(PersonDTO dto);
}
屬性name應(yīng)該自動(dòng)映射,只要它具有相同的名稱和嵌套級(jí)別
更新:
@Mapper(componentModel = "spring")
public abstract class Mapper {
@Autowired
private CityDAO cityDao;
@Mappings({
@Mapping(source = "street", target = "address.street"),
@Mapping(source = "city", target = "address.city")
})
Person fromPersonDTO(PersonDTO dto);
@AfterMapping
void after(@MappingTarget Person person) {
Address address = person.getAddress();
if (address != null) {
// additional null-checks might be required
address.setStreet(address.getStreet().replaceAll(" ", "_"));
address.setCity(cityDao.findByName(address.getCity()).getId();
}
}
}
請(qǐng)注意,為了使用自動(dòng)裝配的 bean,映射器必須是一個(gè)類,而不是一個(gè)接口
添加回答
舉報(bào)