Java enum枚舉 數據轉換

//枚舉類

public enum AuditStatusEnums {
    DFP(0,"待分配"),
    DSH(1,"待審覈"),
    YSH(2,"已審覈");

    private Integer value;
    private String  msg;

     AuditStatusEnums(Integer value,String msg){
         this.value = value;
         this.msg = msg;
     }

    public Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    @Override
    public String toString(){
         return msg;
    }
    //獲取枚舉實例
    public static AuditStatusEnums fromValue(Integer value) {
        for (AuditStatusEnums val : values()) {
            if (val.getValue().equals(value)) {
                return val;
            }
        }
        throw new IllegalArgumentException();
    }

    //獲取枚舉實例
    public static AuditStatusEnums fromMsg(String msg) {
        for (AuditStatusEnums val : values()) {
            if (val.getMsg().equals(msg)) {
                return val;
            }
        }
        throw new IllegalArgumentException();
    }

}

//轉換的工具類實現AttributeConverter接口



import javax.persistence.AttributeConverter;

public class EnumConvert implements AttributeConverter<String,Integer>{
    @Override
    public Integer convertToDatabaseColumn(String attribute) {
        try {
            Integer val = Integer.parseInt(attribute);
            return AuditStatusEnums.fromValue(val).getValue();
        }catch (NumberFormatException e){
            return AuditStatusEnums.fromMsg(attribute).getValue();
        }
    }

    @Override
    public String convertToEntityAttribute(Integer dbData) {
        return AuditStatusEnums.fromValue(dbData).getMsg();
    }
}

 

在實體類中定義屬性

給屬性添加@Convert(converter = EnumConvert.class)

@Convert(converter = EnumConvert.class)
@Column(name = "auditStatus")
private String  auditStatus;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章