🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
**1. 三个实体类** ```java @Data @Builder public class Province { private Integer provinceId; private String provinceName; } @Data @Builder public class City { private Integer cityId; private String cityName; } /** * 包含了Province和City的所有字段 */ @Data @Builder public class CountryDto { private Integer provinceId; private String provinceName; private Integer cityId; private String cityName; } ``` **2. 定义映射接口** ```java @Mapper public interface CountryMapper { CountryMapper INSTANCE = Mappers.getMapper(CountryMapper.class); /** * 可以自定义一个映射方法。 * 该方法将Province和City的所有属性都映射到CountryDto中。 */ default CountryDto toDto(Province s1, City s2) { return CountryDto.builder() .provinceId(s1.getProvinceId()) .provinceName(s1.getProvinceName()) .cityId(s2.getCityId()) .cityName(s2.getCityName()) .build(); } } ``` **3. 测试** ```java @Test public void testCountryMapper() { Province province = Province.builder().provinceId(1001).provinceName("地球").build(); City city = City.builder().cityId(1002).cityName("亚洲").build(); CountryDto countryDto = CountryMapper.INSTANCE.toDto(province, city); //CountryDto(provinceId=1001, provinceName=地球, cityId=1002, cityName=亚洲) System.out.println(countryDto); } ``` **4. 查看映射接口被MapStruct编译后的代码** 其实就是MapStruct帮我们实现了映射接口,然后我们调用自定义默认方法即可。 ```java public class CountryMapperImpl implements CountryMapper { public CountryMapperImpl() { } } ```