MapStruct 是一个用于生成类型安全且易于维护的映射代码的代码生成器。它主要用于对象之间的属性映射,减少了手动编写映射代码的工作量,并提高了代码的可读性和可维护性。
MapStruct 支持多种类型的映射,包括:
MapStruct 广泛应用于数据传输对象(DTO)和领域模型之间的映射,特别是在使用 Spring 和 JPA 等框架进行开发时。
如果你需要将源对象的属性映射到一个已经存在的目标对象上,可以使用 @MappingTarget
注解。以下是一个示例:
假设我们有两个类 Source
和 Target
:
public class Source {
private String name;
private int age;
// getters and setters
}
public class Target {
private String name;
private int age;
// getters and setters
}
我们可以定义一个映射接口 Mapper
:
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;
@Mapper
public interface Mapper {
Mapper INSTANCE = Mappers.getMapper(Mapper.class);
void updateTarget(Source source, @MappingTarget Target target);
}
在这个接口中,updateTarget
方法使用了 @MappingTarget
注解,表示目标对象 target
已经存在,并且我们只需要更新它的属性。
public class Main {
public static void main(String[] args) {
Source source = new Source();
source.setName("John");
source.setAge(30);
Target target = new Target();
target.setName("Old Name");
target.setAge(0);
Mapper.INSTANCE.updateTarget(source, target);
System.out.println(target.getName()); // 输出: John
System.out.println(target.getAge()); // 输出: 30
}
}
通过这种方式,你可以高效地将源对象的属性映射到已经存在的目标对象上,避免了手动编写复杂的映射逻辑。
领取专属 10元无门槛券
手把手带您无忧上云