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;
}
}
添加回答
举报