Java mapstruct:将字段名称映射到属性
源类:Java mapstruct:将字段名称映射到属性,java,mapstruct,Java,Mapstruct,源类: class ReportSettings { private HeaderSettings headerSettings; private FooterSettings footerSettings; // getters and setters omitted } class HeaderSettings { private boolean showLogo; // getters and setters omitted } class
class ReportSettings {
private HeaderSettings headerSettings;
private FooterSettings footerSettings;
// getters and setters omitted
}
class HeaderSettings {
private boolean showLogo;
// getters and setters omitted
}
class FooterSettings {
private boolean showPageNumber;
// getters and setters omitted
}
目标类别:
class Parameters {
private String group;
private String name;
private String value;
// getters and setters omitted
}
是否可以使用MapStruct将ReportSettings
对象转换为List
对象,如下所示,ReportSettings
类中的字段名映射到参数类的组字段:
group | name | value
----------------------------------------
headerSettings | showLogo | false
footerSettings | showPageNumber | true
据我所知,目前还没有基于字段名动态创建列表的功能
我唯一想到的是一个真正静态的解决方案,但我想你有一个动态的字段列表,不能这样做
@Mapper
公共抽象类ReportSettingsMapper{
@映射({
@映射(target=“group”,constant=“headerSettings”),
@映射(target=“name”,constant=“showLogo”),
@映射(target=“value”,source=“headerSettings.showLogo”)
})
受保护的抽象参数mapHeaderSettings(ReportSettings设置);
@映射({
@映射(target=“group”,constant=“footerSettings”),
@映射(target=“name”,constant=“showPageNumber”),
@映射(target=“value”,source=“footerSettings.showPageNumber”)
})
受保护的抽象参数mapFooterSettings(ReportSettings设置);
公共列表mapReportSettings(报告设置){
列表参数=新的ArrayList();
添加(mapHeaderSettings(设置));
添加(mapFooterSettings(设置));
返回参数;
}
}
(未测试的代码;如果使用Java>=8,则可以使用带有默认方法的接口+删除@Mappings
容器注释)