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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章