GitHub
简介
使用MapStruct
Maven
For Maven-based projects, add the following to your POM file in order to use MapStruct (the dependencies are available at Maven Central):
对于基于Maven的项目,请将以下内容添加到POM文件中,以便使用MapStruct(依赖项在Maven Central上提供):
...
1.3.1.Final
...
org.mapstruct
mapstruct
${org.mapstruct.version}
compile
org.mapstruct
mapstruct-processor
${org.mapstruct.version}
compile
...
IDE 插件
建议安装MapStruct插件
IDE
插件名称
IntelliJ IDEA
MapStruct Support
示例
准备以下两组实体类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Car {
private String make;
private int numberOfSeats;
private CarType type;
}
import lombok.Data;
@Data
public class CarDto {
private String make;
private int seatCount;
private String type;
}
public enum CarType {
SEDAN;
}
映射接口
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper
public interface CarMapper {
CarMapper INSTANCE = Mappers.getMapper(CarMapper.class);
@Mapping(source = "numberOfSeats", target = "seatCount")
CarDto carToCarDto(Car car);
}
单元测试类
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class CarMapperTests {
@Test
public void shouldMapCarToDto() {
//given
Car car = new Car( "Morris", 5, CarType.SEDAN );
//when
CarDto carDto = CarMapper.INSTANCE.carToCarDto( car );
//then
assertThat( carDto ).isNotNull();
assertThat( carDto.getMake() ).isEqualTo( "Morris" );
assertThat( carDto.getSeatCount() ).isEqualTo( 5 );
assertThat( carDto.getType() ).isEqualTo( "SEDAN" );
}
}