1 回答

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果您想手動(dòng)執(zhí)行映射(特別適合不同的對(duì)象)
您可以查看不同對(duì)象映射屬性映射的文檔,
您可以通過(guò)使用方法引用來(lái)匹配源 getter 和目標(biāo) setter 來(lái)定義屬性映射。
typeMap.addMapping(Source::getFirstName,?Destination::setName);
源類(lèi)型和目標(biāo)類(lèi)型不需要匹配。
?typeMap.addMapping(Source::getAge,?Destination::setAgeString);
如果您不想逐個(gè)字段進(jìn)行映射以避免樣板代碼
您可以配置跳過(guò)映射器,以避免將某些字段映射到目標(biāo)模型:
modelMapper.addMappings(mapper?->?mapper.skip(Entity::setId));
我已經(jīng)為您的案例創(chuàng)建了一個(gè)測(cè)試,映射適用于雙方,無(wú)需配置任何內(nèi)容:
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.junit.Before;
import org.junit.Test;
import org.modelmapper.ModelMapper;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertNotNull;
public class ModelMapperTest {
? ? private ModelMapper modelMapper;
? ? @Before
? ? public void beforeTest() {
? ? ? ? this.modelMapper = new ModelMapper();
? ? }
? ? @Test
? ? public void fromSourceToDestination() {
? ? ? ? Source source = new Source(1L, "Hello");
? ? ? ? Destination destination = modelMapper.map(source, Destination.class);
? ? ? ? assertNotNull(destination);
? ? ? ? assertEquals("Hello", destination.getName());
? ? }
? ? @Test
? ? public void fromDestinationToSource() {
? ? ? ? Destination destination = new Destination("olleH");
? ? ? ? Source source = modelMapper.map(destination, Source.class);
? ? ? ? assertNotNull(source);
? ? ? ? assertEquals("olleH", destination.getName());
? ? }
}
@Data
@NoArgsConstructor
@AllArgsConstructor
class Source {
? ? private Long id;
? ? private String name;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
class Destination {
? ? private String name;
}
添加回答
舉報(bào)