如何使用Mapstruct将缺少字段的DTO映射到分层域实体?

问题描述 投票:0回答:1

我有一个像这样的域基类:

@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class Product {

    private UUID id;
    private Category category;

}

类别字段是枚举:

public enum Category {

    BOOK("book"),
    PHONE("phone");

    private String name;

    Category(String name) {
        this.name = name;
    }

    public static Category fromName(String name) {
        for (Category category : values()) {
            if (category.getName().equals(name)) {
                return category;
            }
        }
        return null;
    }

    public String getName() {
        return this.name;
    }

}

有一个扩展产品的类:

@Data
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class Book extends Product {

    private String title;
    private String isbn;
    private Author author;

}

还有 DTO 类:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BookDtoRest {

    private String title;
    private String isbn;
    private Author author;

}

我想在收到请求后将

BookDtoRest
映射到
Book
。我希望新创建的书籍能够正确填充父级字段
id
category
。您可以暂时忘记
Author

如何使用 Mapstruct 做到这一点?

java mapstruct
1个回答
0
投票

我会快速浏览一下:bealdung

@Mapper
public interface BookMapper{
    Book sourceToDestination(BookDtoRest source);
}

据我了解,通过在你的maven / gradle中建立依赖关系。 使用上面的 Mapstruct 将创建映射器类,因为字段是相同的,不需要定义自定义映射。

© www.soinside.com 2019 - 2024. All rights reserved.