请问mapstruct中,如何将对象的属性映射到父类的属性中
时间: 2023-11-27 18:49:36 浏览: 48
在 MapStruct 中,如果你想要将一个对象的属性映射到父类的属性中,可以使用 `@Mapping` 注解来实现。具体步骤如下:
1. 在父类中定义一个属性,用于接收映射过来的属性值。
例如,假设父类为 `Person`,其中有一个属性 `name`,那么可以在父类中添加如下代码:
```java
public abstract class Person {
protected String name;
// 省略 getter 和 setter 方法
}
```
2. 在子类中定义一个与父类属性同名的属性,并使用 `@Mapping` 注解将该属性映射到父类属性中。
例如,假设子类为 `Student`,其中有一个属性 `name`,那么可以在子类中添加如下代码:
```java
public class Student extends Person {
@Mapping(target = "name", source = "studentName")
private String studentName;
// 省略 getter 和 setter 方法
}
```
3. 定义一个对应的 MapStruct 映射方法,并在其中调用父类的属性映射。
例如,可以添加如下代码:
```java
@Mapper
public interface StudentMapper {
@Mapping(target = "name", source = "studentName")
StudentDTO toDto(Student student);
default Person toPerson(Student student) {
Person person = new Person();
person.setName(student.getName());
return person;
}
}
```
在上述代码中,我们定义了一个 `toPerson` 方法,用于将 `Student` 对象映射成 `Person` 对象。在该方法中,我们通过调用 `student.getName()` 方法获取 `Student` 对象中的 `name` 属性值,并将其设置到 `Person` 对象中的 `name` 属性中。
这样,当我们调用 `StudentMapper.toPerson()` 方法时,就可以将 `Student` 对象中的 `name` 属性值映射到 `Person` 对象中的 `name` 属性中了。