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 类的通用写法的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin基础(十四) 枚举类(enum)与java的写法差异
当断言函数返回预期的 DTO 对象时,如何在 DTO 对象类的 getter 上获得 100% 的测试覆盖率?