2 回答

TA貢獻1798條經驗 獲得超3個贊
由于 Java 表達式的輸出是一個字符串,因此您希望映射結構將調用日期映射器類的 asDate 方法?
您希望在生成的代碼中包含的內容如下所示:
...
personBio.setBirthDate( new DateMapper().asDate(fileLine.substring(redactedpackagename.Constants.BIRTH_DATE_START_POS, redactedpackagename.Constants.BIRTH_DATE_END_POS)));
..
你是對的,它不起作用。我不知道為什么。。。
相反,您可以導入映射器并在 Java 表達式中使用它,并使用字符串實用程序檢查輸入:
@Mapper(imports = {DateMapper.class, StringUtils.class})
public interface PersonBioMapper {
@Mapping(target = "birthDate",
expression = "java(new DateMapper().asDate(StringUtils.substring(fileLine, redactedpackagename.Constants.BIRTH_DATE_START_POS, redatcedpackagename.Constants.BIRTH_DATE_END_POS)))")
PersonBio fileLineToPersonBio(String fileLine);
}
另一種方式(更具可讀性?)就像菲利普說的那樣,做一個自定義映射:
@Mapper
public interface PersonBioMapper {
default PersonBio fileLineToPersonBio(String fileLine) {
PersonBio personBio = new PersonBio();
personBio.setBirthDate(new DateMapper().asDate(StringUtils.substring(fileLine,redactedpackagename.Constants.BIRTH_DATE_START_POS, redactedpackagename.Constants.BIRTH_DATE_END_POS)));
return personBio;
}
}
添加回答
舉報