处理枚举

130 阅读1分钟

如何优雅处理枚举值,分别介绍后端处理与前端处理,这样做的好处是新增枚举值不影响原来业务

说明:以性别(gender)为例,假设数据库存储为数字,其中0代表未知,1代表男,2代表女

后端处理

public enum GenderEnum {

    UNKNOWN("未知", 0),
    MAN("男", 1),
    WOMAN("女",2 );

    private final String text;

    private final int value;

    GenderEnum(String text, int value) {
        this.text = text;
        this.value = value;
    }


    /**
     * 根据 value 获取枚举
     *
     * @param value
     * @return
     */
    public static GenderEnum getEnumByValue(int value) {
        for (GenderEnum anEnum : GenderEnum.values()) {
            if (anEnum.value==value) {
                return anEnum;
            }
        }
        return null;
    }

    public int getValue() {
        return value;
    }

    public String getText() {
        return text;
    }
}

测试

public void enumTest(){
    System.out.println(GenderEnum.getEnumByValue(1).getText());	//输出男
    System.out.println(GenderEnum.getEnumByValue(2).getText()); //输出女
}

前端处理

export const genderEnum = [
  { value: 0, text: '未知' },
  { value: 1, text: '男' },
  { value: 2, text: '女' },
]

export const getByValue = (value) => {
  return genderEnum.find((item) => item.value === value)
}

export const getByText = (text) => {
  return genderEnum.find((item) => item.text === text)
}

测试

console.log(getByValue(1).text)		//男
console.log(getByValue(2).text)		//女