将数据库取出的值,前端页面用汉字展示,将code转换成枚举

第一步:书写枚举类(CodeEnum)

package com.imooc.enums;
////CodeEnum是为了让我从数据库取出的值,然后我们在前端页面展示为汉字(重点),将code转换成枚举
public interface CodeEnum {
    Integer getCode();
}

第二步:书写枚举帮助类(EnumUtil)

package com.imooc.utils;

import com.imooc.enums.CodeEnum;

//通过code来获得枚举,T代表枚举,书写的公共类  <T extends CodeEnum>这表达类,表示不确定的东西,像Interface/class
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;
    }

}

第三步:书写DTO


import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.imooc.dataobject.OrderDetail;
import com.imooc.enums.OrderStatusEnum;
import com.imooc.enums.PayStatusEnum;
import com.imooc.utils.EnumUtil;
import com.imooc.utils.serializer.Date2Serializer;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
//订单的dtos

/**
 * @JsonInclude(JsonInclude.Include.NON_NULL)//这注解表示为null的时候不返回,如果要全局的null不显示,
 *  则在配置文件配置jackson: default-property-inclusion: non_null
 */
public class OrderDTO {
    //订单id
    private String orderId;
    //买家名字
    private String buyerName;
    //买家手机号
    private String buyerPhone;
    //买家地址
    private String buyerAddress;
    //买家微信openid
    private String buyerOpenid;
    //订单总金额
    private BigDecimal orderAmount;
    //订单状态,默认为0新下单
    private Integer orderStatus;
    //支付状态,默认为0未支付
    private Integer payStatus;
    //创建时间
    @JsonSerialize(using= Date2Serializer.class) //注解,可以实现date数据转换成long型数据等功能,该注解作用在属性的getter()方法上,完成项目需求毫秒转成秒来呈现
    private Date createTime;
    //更新时间
    @JsonSerialize(using= Date2Serializer.class)
    private Date updateTime;
    //一个订单有多个订单详情的商品
    List<OrderDetail> orderDetailList;
    //通过code获取枚举(使用通用方法去获取枚举,变得更优雅)
    @JsonIgnore  //注解的意思是对象转成json格式就会忽略掉这个方法了
    public OrderStatusEnum getOrderStatusEnum(){
        return EnumUtil.getByCode(orderStatus,OrderStatusEnum.class);
    }
    @JsonIgnore
    public PayStatusEnum getPayStatusEnum(){
        return EnumUtil.getByCode(payStatus,PayStatusEnum.class);
    }

猜你喜欢

转载自blog.csdn.net/Richard_666/article/details/82990501