3.类型安全、高性能、无依赖性
... <properties> <org.mapstruct.version>1.5.5.Final</org.mapstruct.version> </properties> ... <dependencies> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>${org.mapstruct.version}</version> </dependency> </dependencies> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <annotationProcessorPaths> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build> ...② 创建相关的转换对象
/** * @堆代码 duidaima.com * @date 2023-08-07 */ @Data public class DeviceParam { // 设备id private Long applianceId; // 设备名字 private String name; } /** * @date 2023-08-07 */ @Data public class DeviceDO { // 设备id private Long applianceId; // 设备名字 private String name; }③ 创建转换方法
/** * @堆代码 duidaima.com * @date 2023-08-07 */ @Mapper public interface DeviceMapper { DeviceMapper INSTANCE = Mappers.getMapper(DeviceMapper.class); DeviceDO toDO(DeviceParam param); }使用方式
DeviceParam param = new DeviceParam(); param.setApplianceId("123456"); param.setName("客厅电视"); // 调用方式 DeviceDO deviceDO = DeviceMapper.INSTANCE.toDO(param); // 打印 System.out.println(deviceDO.toString);经过如上简单的配置后,就实现来param到DO的装换,真的简单方便呀。
public class DeviceMapperImpl implements DeviceMapper { @Override public DeviceDO toDO(DeviceParam param) { if(param == null){ return null; } DeviceDO deivceDO = new DeviceDO(); if(param.getApplianceId() != null){ deviceDO.setApplianceId(param.getApplianceId()); } if(param.getName() != null){ deviceDO.setApplianceId(param.getName()); } return deviceDO; } }五. 其他使用场景
/** * @堆代码 duidaima.com * @date 2023-08-07 */ @Data public class DeviceParam { // 设备id private Long applianceId; // 设备名字 private String deviceName; } /** * @author codejames * @date 2023-08-07 */ @Data public class DeviceDO { // 设备id private Long applianceId; // 设备名字 private String name; } /** * @date 2023-08-07 */ @Mapper public interface DeviceMapper { DeviceMapper INSTANCE = Mappers.getMapper(DeviceMapper.class); @Mapping(source = "deviceName", target = "name") DeviceDO toDO(DeviceParam param); }除了单个对象的转换,MapStruct也支持List等类型的转换。