<!-- modelmapper依赖 -->
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.3.9</version>
</dependency>
以下为相关的使用示例
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
源对象:
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Apple {
private String id;
private String name;
private String createAge;
private String age;
}
目标对象:
import lombok.Data;
@Data
public class AppleDto {
private String name;
private String create_age;
private String birth;
}
import org.junit.Test;
import org.modelmapper.ModelMapper;
import org.modelmapper.PropertyMap;
import org.modelmapper.TypeToken;
import org.modelmapper.convention.MatchingStrategies;
public class Demo {
public static Apple apple=new Apple("1", "red", "21", "25");;
ModelMapper modelMapper = new ModelMapper();
@Test
public void test1(){
//直接使用modelMapper要求两个对象的属性命名必须完全一致
AppleDto appleDto = modelMapper.map(apple, AppleDto.class);
System.out.println(appleDto.toString());
}
@Test
public void test2(){
//修改modelMapper的匹配策略:松散匹配源属性和目标属性
//将AppleDto字段改成createage也是可以正确赋值
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.LOOSE);
AppleDto appleDto = modelMapper.map(apple, AppleDto.class);
System.out.println(appleDto.toString());
}
@Test
public void test3(){
//modelMapper采用自定义源属性和目标属性映射规则
modelMapper.addMappings(customField());
AppleDto appleDto = modelMapper.map(apple, new TypeToken<AppleDto>(){}.getType());
System.out.println(appleDto);
}
/**
* 自定义源(Apple)属性和目标(destination)属性映射规则
*/
private static PropertyMap customField() {
return new PropertyMap<Apple, AppleDto>() {
@Override
protected void configure() {
map(source.getAge(), destination.getBirth());
}
};
}
}