1、使用注解@Mapper(componentModel = "spring"),将Convert注册成为bean
2、需要处理源多个字段,最终结果映射目标单个字段
例如:下面需要integralDetailPo的 integralNumber , operationIntegralActivityType两个字段进行处理,最终映射 integralNumber
@Mapper(componentModel = "spring")
public interface IntegralConvert {
@Mapping(target = "integralNumber", expression = "java(convertToNumber(integralDetailPo.getIntegralNumber(),integralDetailPo.getOperationIntegralActivityType()))")
IntegralDetailVo integralDetailVo(IntegralDetailPo integralDetailPo);
default Integer convertToNumber(Integer integralNumber, String operationIntegralActivityType) {
if (!StringUtils.isEmpty("operationIntegralActivityType") && String.valueOf(TASK_TYPE_SEVENTH).equals(operationIntegralActivityType)) {
return (~(integralNumber - 1));
}
return integralNumber;
}
}
3、源字段需要转换成目标字段
@Mapper(componentModel = "spring")
public interface TaskConvert {
@Mapping(target = "day", source = "ext2", qualifiedByName = "dateConvertToDay")
SignVo convertPoToSignVo(TaskRecordPo taskRecordPo);
@Named("dateConvertToDay")
default String dateConvertToDay(String ext2) {
if (!StringUtils.isEmpty(ext2)) {
return ext2.substring(8,10);
}
return null;
}
}