MapStruct实现DTO转DO
引入jar包
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.3.1.Final</version>
</dependency>
两个要转换的类
public class Car {
private String make;
private int numberOfSeats;
private String carType;
public Car() {
}
public Car(String make, int numberOfSeats, String carType) {
this.make = make;
this.numberOfSeats = numberOfSeats;
this.carType = carType;
}
public String getMake() {
return make;
}
public void setMake(String make) {
this.make = make;
}
public int getNumberOfSeats() {
return numberOfSeats;
}
public void setNumberOfSeats(int numberOfSeats) {
this.numberOfSeats = numberOfSeats;
}
public String getCarType() {
return carType;
}
public void setCarType(String carType) {
this.carType = carType;
}
public class CarDTO {
private String make;
private int seatCount;
private String type;
public CarDTO() {
}
public CarDTO(String make, int seatCount, String type) {
this.make = make;
this.seatCount = seatCount;
this.type = type;
}
public String getMake() {
return make;
}
public void setMake(String make) {
this.make = make;
}
public int getSeatCount() {
return seatCount;
}
public void setSeatCount(int seatCount) {
this.seatCount = seatCount;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
创建一个映射器接口
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
@Mapper
public interface CarMapper {
CarMapper Covert = Mappers.getMapper(CarMapper.class);
@Mapping(source = "numberOfSeats", target = "seatCount")
@Mapping(source = "carType", target = "type")
CarDTO carToCarDTO(Car car);
}
@Mapper注释将该接口标记为映射接口,并让 MapStruct 处理器在编译期间启动。 对于源对象和目标对象中具有不同名称的属性,@Mapping可以使用注解来配置名称。
测试
public class CarTest {
public static void main(String[] args) {
Car car = new Car("1122",1,"fasd");
CarDTO carDTO = CarMapper.Covert.carToCarDTO(car);
System.out.println(carDTO.getSeatCount());
System.out.println(carDTO.getMake());
System.out.println(carDTO.getType());
}
}
```