mapstruct:来自两个不同字段的映射

时间:2017-02-10 07:18:35

标签: mapstruct

如何从两个不同的字段进行映射?如果它存在于a.k.l.m.url,我需要将b.url设置为a.x.y.z.url:

b.url =存在(a.x.y.z.url)? a.x.y.z.url:存在(a.k.l.m.url)? a.k.l.m.url:defaultValue

表达式可能会有所帮助,但是如果我检查所有嵌套字段是否为空,那将会很长,例如" a!= null&& a.getX()!= null&& a.getX()。getY()!= null&& a.getX()。getY()。getZ()!= null&& a.getX()。getY()。getZ()。getURL()!= null? a.getX()。getY()。getZ()。getURL():..."

谢谢, 帕维尔

1 个答案:

答案 0 :(得分:0)

您可以使用MapStruct this来访问映射对象。

getUrl(A a)

理论上,您可以通过将Mapper声明为抽象类并定义getUrl(a)方法来表达。你可以在表达中调用@AfterMapping

我建议使用function myFunction() { var doc = SpreadsheetApp.getActiveSpreadsheet(); var sheet = doc.getSheetByName("Sheet1"); var values = sheet.getRange("A:A").getValues(); var row_del = new Array(); for(var i=0;i<values.length;i++) { if(values[i] == 'N'){ row_del.push(i+2); // This line was added for debugging purposes. // sheet.deleteRow(i+2) was the line that was in this condition // (i+2) is used because row 1 has headers and the range starts from 0. } } // Logger.log(row_del); // GmailApp.sendEmail("my_email_address", "subject", row_del) for (var i = row_del.length - 1; i>=0; i--) { sheet.deleteRow(row_del[i]); } },因为它更清洁(在我看来)