🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
**1. 字段类型不一致的两个实体类** ```java @Data public class Cat { private int id; private Integer age; private boolean real; } @Data public class CatDto { private Integer id; private long age; private String real; } ``` **2. 映射接口** ```java @Mapper public interface CatMapper { CatMapper INSTANCE = Mappers.getMapper(CatMapper.class); /** * 下面的情况可以不手动处理: * 1) 基本类型及其对应的包装类之间。如int/Integer、float/Float、long/Long、boolean/Boolean等。 * 2) 任意基本类型与任意包装类之间。如int/long、byte/Integer等。 * 3) 所有基本类型及包装类与String之间。如boolean/String、Integer/String、float/String等。 * 4) 枚举和String之间。 * 5) Java大数类型(java.math.BigInteger, java.math.BigDecimal)和Java基本类型(包括其包装类)与String之间。 * */ CatDto toDto(Cat source); } ``` **3. 测试** ```java @Test public void testCatMapper() throws ParseException { Cat cat = new Cat(); cat.setId(1001); cat.setAge(25); cat.setReal(true); CatDto catDto = CatMapper.INSTANCE.toDto(cat); //Cat:Cat(id=1001, age=25, real=true) System.out.println("Cat:" + cat.toString()); //CatDto:CatDto(id=1001, age=25, real=true) System.out.println("CatDto:" + catDto.toString()); } ``` **4. 查看映射接口被Mapstruct编译后的代码** ```java public class CatMapperImpl implements CatMapper { public CatMapperImpl() { } public CatDto toDto(Cat source) { if (source == null) { return null; } else { CatDto catDto = new CatDto(); catDto.setId(source.getId()); if (source.getAge() != null) { catDto.setAge((long)source.getAge()); } catDto.setReal(String.valueOf(source.isReal())); return catDto; } } } ```