枚举类型的使用、通过code获取枚举类型

♣通过枚举实现状态、描述的的定义

@Getter
public enum OrderStatusEnum{
NEW(0, "新订单"),
FINISHED(1, "完结"),
CANCEL(2, "已取消"),
;
private Integer code;
private String message;

OrderStatusEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
}

开发过程中,数据库中存放的是状态值(0、1…)。一般前端页面处理时需要根据状态手动转换为特定的含义描述。
如果后台的状态是通过枚举类维护的话,可以通过状态(code)获取对应的枚举,从而获得描述信息。

♣枚举工具类,通过Code返回枚举
1.定义枚举类的接口。创建获取code的方法,用于后续循环对比状态。

/**
* @ClassName CodeEnum
* @Description: 定义枚举类型接口
* @Author lsh
* @Date 2018/10/24 21:31
* @Version
*/
public interface CodeEnum<T> {
    T getCode();
}

2.创建枚举类实现规定的接口

/**
* @ClassName OrderStatusEnum
* @Description: 订单状态
* @Author lsh
* @Date 2018/10/11 20:57
* @Version
*/
@Getter
public enum OrderStatusEnum implements CodeEnum{
NEW(0, "新订单"),
FINISHED(1, "完结"),
CANCEL(2, "已取消"),
;

private Integer code;
private String message;

OrderStatusEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
}

3.创建枚举工具类

/**
* @ClassName EnumUtil
* @Description: 枚举工具类,通过Code返回枚举
* T extends CodeEnum 定义泛型的上限
* enumClass.getEnumConstants() 通过反射取出Enum所有常量的属性值
* @Author lsh
* @Date 2018/10/24 21:38
* @Version
*/
public class EnumUtil {

public static <T extends CodeEnum> T getByCode(Integer code, Class<T> enumClass) {
    //通过反射取出Enum所有常量的属性值
    for (T each: enumClass.getEnumConstants()) { 
    //利用code进行循环比较,获取对应的枚举
    if (code.equals(each.getCode())) {
    return each;
    }
}
return null;
    }
}

4.在返回前端的model里面,实现获取枚举的方法。

/**
* @ClassName ProductInfo
* @Description: 商品
* @Author lsh
* @Date 2018/10/7 13:45
* @Version
*/
@Entity
@Data
public class ProductInfo {

@Id
private String productId;

/** 状态, 0正常1下架. */
private Integer productStatus;

@JsonIgnore
public ProductStatusEnum getProductStatusEnum() {
    return EnumUtil.getByCode(productStatus, ProductStatusEnum.class);
}
}

5.页面中获取方式。

<td>${orderDTO.getOrderStatusEnum().message}</td>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值