gpt4 book ai didi

java - MapStruct 避免返回对象创建

转载 作者:行者123 更新时间:2023-11-30 02:39:21 25 4
gpt4 key购买 nike

我有两个模型和一个映射器,

public class Form {
private int x1;
private int x2;
private int x3;
private int x4;
// Constructor and getters setters ommited.
}

public class Domain {
private int x1;
private int x2;
private int x3;
private int x4;
// Constructor and getters setters ommited.
}

@Mapper
public interface DomainMapper {

@Mappings({
@Mapping(target = "x1", ignore = true),
@Mapping(target = "x2", ignore = true)})
Domain toDomain(Form form);
}

这是我的例子,

// I create a form object.
Form form = new Form();
form.setX1(1);
form.setX2(2);
form.setX3(3);
form.setX4(4);

// I create a Domain object.
Domain domain = new Domain();
domain.setX1(100);
domain.setX2(200);

// Map the form to domain.
domain = domainMapper.toDomain(form);
System.out.print(domain.getX1()); // => shows "0" instead of "100"

MapStruct 正在生成源代码,其中创建一个新的 Domain 对象。
运行最后一个命令 domain = DomainMapper.toDomain(form); 我以前的域对象将丢失。有没有办法使用 MapStruct 将属性从 Form 对象传输到我已经创建的 Domain 对象?
我尝试过类似的方法,但它不起作用,

@Mapper
public interface DomainMapper {

@Mappings({
@Mapping(target = "x1", ignore = true),
@Mapping(target = "x2", ignore = true)})
Domain toDomain(Form form, Domain referenceToExistingObject);
}

我是这样用的,但是不行

domainMapper.toDomain(form, domain);

最佳答案

我将设置为@seneque评论的答案。
我可以通过使用注释 @MappingTarget 传递对象的引用,因此映射器不会创建新对象。 .

void updateDomain(Form form, @MappingTarget Domain domain)

关于java - MapStruct 避免返回对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42226910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com