数据量小的数据该采用什么方式来构造数据映射关系?
最近,客户提出一个需求中有一个方法,需要通过两个属性获取它所对应的值,而这种映射关系由客户提供。
刚接收这种映射关系时,我第一时间想到的是用数据库来存储映射关系,但是我还得需要写添加和查询接口,瞬间觉得太繁琐了。后面想到另外一种方式,采用枚举的方式,用枚举类写完后,感觉比较简单明了。(注:枚举类只能用于数据量小映射关系,如数据量大建议采用数据库的方式)
数据映射关系图如下:
枚举类:
package com.shdsd.plugin.Enum;
public enum PPSPAutoCreateEnum {
AUTO_CREATE_VALUE_KEY1("Omni", "Product", "2004-OmniChannel-dev"),
AUTO_CREATE_VALUE_KEY2("Omni", "Program", "2203-M BOSS"),
AUTO_CREATE_VALUE_KEY3("Omni", "project", "2051-TES"),
AUTO_CREATE_VALUE_KEY4("Omni", "service", "2126-Data Service"),
AUTO_CREATE_VALUE_KEY5("R&D", "Product", "2012-Campaign"),
AUTO_CREATE_VALUE_KEY6("R&D", "Program", "2203-M BOSS"),
AUTO_CREATE_VALUE_KEY7("R&D", "project", "2051-TES"),
AUTO_CREATE_VALUE_KEY8("R&D", "service", "2126-Data Service"),
AUTO_CREATE_VALUE_KEY9("Data", "Product", "2128-IMP"),
AUTO_CREATE_VALUE_KEY10("Data", "Program", "2203-Mc BOSS"),
AUTO_CREATE_VALUE_KEY11("Data", "project", "2051-TES"),
AUTO_CREATE_VALUE_KEY12("Data", "service", "2126-Data Service"),
AUTO_CREATE_VALUE_KEY13("PMO & Controlling", "Product", "2210-eTraining2.0"),
AUTO_CREATE_VALUE_KEY14("PMO & Controlling", "Program", "2203-M BOSS"),
AUTO_CREATE_VALUE_KEY15("PMO & Controlling", "project", "2051-TES"),
AUTO_CREATE_VALUE_KEY16("PMO & Controlling", "service", "2126-Data Service"),
AUTO_CREATE_VALUE_KEY17("Restaurant", "Product", "2118-生产"),
AUTO_CREATE_VALUE_KEY18("Restaurant", "Program", "2203-Mc BOSS"),
AUTO_CREATE_VALUE_KEY19("Restaurant", "project", "2051-TES"),
AUTO_CREATE_VALUE_KEY20("Restaurant", "service", "2126-Data Service"),
AUTO_CREATE_VALUE_KEY21("Enterprise Business", "Product", "2118-生产"),
AUTO_CREATE_VALUE_KEY22("Enterprise Business", "Program", "2203-M BOSS"),
AUTO_CREATE_VALUE_KEY23("Enterprise Business", "project", "2051-TES"),
AUTO_CREATE_VALUE_KEY24("Enterprise Business", "service", "2126-Data Service"),
AUTO_CREATE_VALUE_KEY25("Enterprise Finance", "Product", "2118-生产"),
AUTO_CREATE_VALUE_KEY26("Enterprise Finance", "Program", "2203-Mc BOSS"),
AUTO_CREATE_VALUE_KEY27("Enterprise Finance", "project", "2051-TES"),
AUTO_CREATE_VALUE_KEY28("Enterprise Finance", "service", "2126-Data Service"),
AUTO_CREATE_VALUE_KEY29("Infrastructure", "Product", "2118-生产"),
AUTO_CREATE_VALUE_KEY30("Infrastructure", "Program", "2203-M BOSS"),
AUTO_CREATE_VALUE_KEY31("Infrastructure", "project", "2051-TES"),
AUTO_CREATE_VALUE_KEY32("Infrastructure", "service", "2126-Data Service");
private String projectType;
private String ppspCustomFieldValue;
private String value;
PPSPAutoCreateEnum(String projectType, String ppspCustomFieldValue, String value) {
this.projectType = projectType;
this.ppspCustomFieldValue = ppspCustomFieldValue;
this.value = value;
}
public static String getValueByProjectTypeAndPPSPCustomFieldValue(String projectType, String ppspCustomFieldValue) {
PPSPAutoCreateEnum[] changeHandleEnums = values();
for (PPSPAutoCreateEnum ppspAutoCreateEnum : changeHandleEnums) {
if (ppspAutoCreateEnum.getProjectType().equals(projectType) && ppspAutoCreateEnum.getPpspCustomFieldValue().equals(ppspCustomFieldValue)) {
return ppspAutoCreateEnum.getValue();
}
}
return null;
}
public String getProjectType() {
return projectType;
}
public String getPpspCustomFieldValue() {
return ppspCustomFieldValue;
}
public String getValue() {
return value;
}
}
调用方法如下:
String projectName = PPSPAutoCreateEnum.getValueByProjectTypeAndPPSPCustomFieldValue(leadTeamNameCategory, pPspCustomFieldValue);