闽公网安备 35020302035485号
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等类型的转换。