使用mapstruct将A对象的id属性映射给B对象的id属性,但是id是C的属性,不是B 的属性,不过B对象继承C对象,Class B extends C
时间: 2023-09-22 16:15:22 浏览: 235
MapStruct实体转换及List转换的方法讲解
可以使用MapStruct的继承功能来实现这个映射。
首先,在C和B对象之间创建一个映射器接口,如下所示:
```java
@Mapper
public interface CAndBMapper {
CAndBMapper INSTANCE = Mappers.getMapper(CAndBMapper.class);
@Mapping(source = "id", target = "id")
B toB(C c);
}
```
在接口中,我们定义了一个映射方法 `toB`,它将C对象映射为B对象,并将id属性从C对象映射到B对象。由于B对象继承自C对象,因此可以直接使用C对象作为参数类型来调用该方法。
然后,我们可以使用MapStruct的普通映射器来将A对象映射为C对象,如下所示:
```java
@Mapper
public interface AToCMapper {
AToCMapper INSTANCE = Mappers.getMapper(AToCMapper.class);
@Mapping(source = "id", target = "id")
C toC(A a);
}
```
最后,我们可以将这两个映射器组合在一起,将A对象映射为B对象,如下所示:
```java
A a = new A();
C c = AToCMapper.INSTANCE.toC(a);
B b = CAndBMapper.INSTANCE.toB(c);
```
这样,我们就成功地将A对象的id属性映射给了B对象的id属性,即使id属性实际上是C对象的属性。
阅读全文