DTO 中返回 Enum 类的通用写法

Posted qinls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DTO 中返回 Enum 类的通用写法相关的知识,希望对你有一定的参考价值。

1.写一个通用接口

public interface CodeEnum<T> {
    T getCode();
}

2.枚举类中实现接口

@Getter
public enum OrderStatusEnum implements CodeEnum<Integer> {
    NEW(0, "新订单"),
    FINISHED(1, "完结"),
    CANCEL(2, "已取消"),;

    private Integer code;
    private String msg;

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

3.建一个工具 类

public class EnumUtil {
    public static <T extends CodeEnum> T getByCode(Integer code, Class<T> enumClass) {
        for (T each : enumClass.getEnumConstants()) {
            if (code.equals(each.getCode())) {
                return each;
            }
        }
        return null;
    }
}

4.dto 类中引用

@Data
//@JsonInclude(JsonInclude.Include.NON_NULL)
public class OrderDTO {

    private String orderId;
    private String buyerName;
    private String buyerPhone = "";
    private String buyerAddress;
    private String buyerOpenid;

    //订单总金额
    private BigDecimal orderAmount;

    //订单状态 默认0新订单
    private Integer orderStatus;

    //支付状态 默认0未支付
    private Integer payStatus;

    //    @JsonSerialize
//    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    private Date updateTime;

    List<OrderDetail> orderDetailList;

    @JsonIgnore  //对象转json 格式可以忽略
    public OrderStatusEnum getOrderStatusEnum() {
        return EnumUtil.getByCode(orderStatus, OrderStatusEnum.class);
    }

}

 

以上是关于DTO 中返回 Enum 类的通用写法的主要内容,如果未能解决你的问题,请参考以下文章

controller通过map返回减少dto类的创建

Kotlin基础(十四) 枚举类(enum)与java的写法差异

当断言函数返回预期的 DTO 对象时,如何在 DTO 对象类的 getter 上获得 100% 的测试覆盖率?

通用类的写法

Kotlin基础(十四) 枚举类(enum)数据类(data)和密封类(sealed)与java的写法差异

java枚举类型