简介
官网
MapStruct 是一个代码生成器,它基于配置方法的约定,极大地简化了 Java Bean 类型之间映射的实现。
生成的映射代码使用普通方法调用,因此快速、类型安全且易于理解。
引入依赖
<!-- mapStruct 对象转换 -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.2.Final</version>
</dependency>
例子
假设我们有一个表示汽车的类Car,和一个随附的数据传输对象 CarDto。
这两个类非常相似,只是属性具有不同的名称,并且类型属性在类中属于特殊的枚举类型,但在 DTO 中是纯字符串。
public class Car {
private String make;
private int numberOfSeats;
private CarType type;
//constructor, getters, setters etc.
}
public class CarDto {
private String make;
private int seatCount;
private String type;
//constructor, getters, setters etc.
}
要生成映射器以从对象创建对象,需要定义映射器接口
方式一:工厂方式
// 注意这个Mapper不是MybatisPlus中的Mapper注解
@Mapper
public interface CarMapping {
CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );
@Mapping(source = "numberOfSeats", target = "seatCount")
CarDto carToCarDto(Car car);
}
方式二:依赖注入方式
// 注意这个Mapper不是MybatisPlus中的Mapper注解
@Mapper(componentModel = "spring")
public interface CarMapping {
@Mapping(source = "numberOfSeats", target = "seatCount")
CarDto carToCarDto(Car car);
}
项目编译运行后可以在target目录的classes下看到生成的实现类