2

1、引入maven依赖

 <dependencies>
        <dependency>
            <groupId>org.modelmapper</groupId>
            <artifactId>modelmapper</artifactId>
            <version>2.3.0</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
 </dependencies>

2、实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Apple {

    private String id;
    private String name;
    private String createAge;

    private String age;
}

@Data
public class AppleDto {

    private String name;
    private String create_age;
    private String birth;
}

3、使用Demo

public class Demo {
    public static Apple apple;
    ModelMapper modelMapper = new ModelMapper();
    static {
        apple = new Apple("1", "red", "21", "25");
    }

    // AppleDto(name=red, create_age=null, birth=null)
    @Test
    public void test1(){
        AppleDto appleDto = modelMapper.map(apple, AppleDto.class);
        System.out.println(appleDto.toString());
    }

    // AppleDto(name=red, create_age=21, birth=null),将create_age字段改成createage也是可以正确赋值
    @Test
    public void test2(){
        modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.LOOSE);
        AppleDto appleDto = modelMapper.map(apple, AppleDto.class);
        System.out.println(appleDto.toString());
    }
    // AppleDto(name=red, create_age=null, birth=25)
    @Test
    public void test3(){
        modelMapper.addMappings(customField());
        AppleDto appleDto = modelMapper.map(apple, new TypeToken<AppleDto>(){}.getType());
        System.out.println(appleDto);
    }

    // 自定义映射规则
    private static PropertyMap customField() {

        return new PropertyMap<Apple, AppleDto>() {
            @Override
            protected void configure() {
                map(source.getAge(), destination.getBirth());
            }
        };
    }
}

一念花开
97 声望16 粉丝