如何使用MapStructMap多层DTO:
// Menu.java
public class Menu {
private String path;
private String name;
private String component;
private String redirect;
private MenuMeta meta; // <- This
}
// MenuMata.java
public class MenuMeta {
private String title;
private String icon;
private Boolean hideMenu;
private String currentActiveMenu;
private Boolean ignoreKeepAlive;
private Boolean showMenu;
private String frameSrc;
private Boolean hideBreadcrumb;
}
// MenuSaveQuery
public class MenuSaveQuery {
private Long parentId;
private String path;
private String name;
private String component;
private String redirect;
private String title;
private String icon;
private Boolean hideMenu;
private String currentActiveMenu;
private Boolean ignoreKeepAlive;
private Boolean showMenu;
private String frameSrc;
private Boolean hideBreadcrumb;
}
我想把上面的两个类投影到下面的这个类中,但是我不知道怎么做。
像这样:
public Menu save(MenuSaveQuery query);
我知道我可以用@Mapping target
和source
来一一Map,但是这样太麻烦了。有什么简单的方法吗
1条答案
按热度按时间mwkjh3gx1#
根据Mapstruct文档,有一个解决方案:https://mapstruct.org/documentation/stable/reference/pdf/mapstruct-reference-guide.pdf
如果不想显式命名嵌套源bean的所有属性,可以使用。作为目标。
生成的代码将直接将CustomerDto.record中的每个属性Map到Customer,而不需要手动命名它们中的任何一个。Customer.account也是如此。