问题描述
我已经实现了我的基本要求,它们在一个简单的场景中运行良好,如下面的代码片段所述。但是对于新要求,我需要帮助的最佳方法是什么。
新要求:数字格式的状态用于其他服务,但在请求-响应状态表示中是这些用户友好的字符串 ["Not Started","In Progress","Completed"]
@AllArgsConstructor
@Getter
public enum StatusEnum {
NOT_STARTED(1,"Not Started"),IN_PROGRESS(2,"In Progress"),COMPLETED(3,"Completed");
private final int key;
private final String value;
}
下面是我的 MapStruct 逻辑,用于将枚举转换为字符串和反之亦然的转换逻辑。这适用于基本要求。但新需求的逻辑是什么?
ActionItem.java:
private Constants.StatusEnum status;
基本要求适用于以下实现:
@AllArgsConstructor
@Getter
public enum StatusEnum {
NOT_STARTED("Not Started"),IN_PROGRESS("In Progress"),COMPLETED("Completed");
private final String value;
}
@Mapper
public interface ActionItemMapper extents BaseMapper {
@Mapping(source = "status",target = "status",qualifiedByName = "statusEnumToString")
ActionItemResponse toActionItemResponse(ActionItem actionItem);
}
@Mapper
public interface BaseMapper {
@Named("statusEnumToString")
default String statusEnumToString(Constants.StatusEnum statusEnum) {
return statusEnum.getValue();
}
@Named("statusStringToEnum")
default Constants.StatusEnum statusStringToEnum(String status) {
return List.of(Constants.StatusEnum.values()).stream().filter(s -> s.getValue().equals(status)).findAny()
.orElse(null);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)