状态码转文字!!!(表格数字转文字)

1、应用场景:在我们的数据库表中经常会有status这个字段,这个字段经常表示此类商品的状态,例如:0->删除,1->上架,0->下架,等等。

2、我们返回给前端数据时,如果在页面显示0、1、2,显然是不合适的。 这时就需要我们定义一个枚举类来解决这个问题。

2.1 写一个枚举,用于描述状态的意思
java 复制代码
package com.by.enmus;

import lombok.Getter;
import lombok.Setter;

import java.util.Arrays;
import java.util.Optional;

/**
 * <p>Project: wms-root - ProduceStatus</p>
 * <p>Powered by scl On 2024-02-27 14:54:47</p>
 * <p>描述:<p>
 *
 * @author 孙臣龙 [1846080280@qq.com]
 * @version 1.0
 * @since 17
 */
public enum ProductStatus {
    SALE(1, "上架"),
    OFF_SALE(2, "下架"),
    DELETE(0, "删除");

    @Setter
    @Getter
    private Integer code; //状态
    @Setter
    @Getter
    private String desc; //状态描述

    ProductStatus(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public static ProductStatus findByCode(Integer code) {
        //jdk1.8提供了哪些新特性
        Optional<ProductStatus> optional = Arrays.stream(ProductStatus.values()).filter(item -> item.getCode().equals(code)).findFirst();
        /*
        if (optional.isPresent()){
            return optional.get();
        }
        return null;
        */
        return optional.orElse(null);
    }
}
2.2 在商品的pojo 里对状态码(status)做个增强 statusx
java 复制代码
/*
 * Copyright (c) 2020, 2024,  All rights reserved.
 *
 */
package com.by.model;

import com.by.enmus.ProductStatus;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>Project: pages - Product</p>
 * <p>Powered by scl On 2024-02-18 15:56:32</p>
 * <p>描述:<p>
 *
 * @author 孙臣龙 [1846080280@qq.com]
 * @version 1.0
 * @since 17
 */
@Data
public class Product extends BaseModel {
    private Integer id;
    private String name;
    private String subName;
    private Integer categoryId;
    private String img;
    //status默认0为删除
    private Integer status = 1;
    private String statusX;

    // 根据状态码获取状态值返回给前端,前端直接使用statusX来显示状态值
    public String getStatusX() {
        ProductStatus productStatus = ProductStatus.findByCode(this.status);
        if (productStatus != null) {
            return productStatus.getDesc();
        }
        return "未定义";
    }
    private BigDecimal price;
    private String brief;
    private Integer seq;
    private String tags;
    private String lastUpdateBy;

}

3、前端只需要渲染statusX这个属性值就可以了

4、附加:这时也许你在查询时会出现一个bug,状态为0 的也能显示出来,这就需要修改我们的sql语句了。只需将状态status值大于或不等于0即可

sql 复制代码
 select * from 205_product
        <where>
            <if test="id != null">
                and id = #{id}
            </if>
            <if test="categoryId != null">
                and categoryId = #{categoryId}
            </if>
            <if test="ids != null">
                and id in
                <foreach collection="ids" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="name != null">
                and name like CONCAT('%',#{name}, '%')
            </if>
                 and status>0
        </where>
        order by seq desc
相关推荐
果果燕18 小时前
实习笔记(五)面板 board 按钮状态解析任务
状态模式
程序员小八77719 小时前
后端转全栈:前端思维转变(Vue 视角)
前端·vue.js·状态模式
梦想的旅途219 小时前
基于企业微信API的微应用前端与后端架构设计
前端·状态模式·企业微信
烟漠河洛19 小时前
海外仓库存周转慢的破局点在于重构多仓数据同步架构
重构·状态模式
许彰午1 天前
13-describe元数据输出
java·低代码·架构·状态模式
布莱克6051 天前
如何实现断点续传和分片上传?
网络·tcp/ip·状态模式
leoZ2311 天前
AI+前端提效- 06 AI辅助调试排错:前端报错、白屏、兼容问题极速定位
前端·人工智能·chatgpt·状态模式·超分辨率重建·openvino·dreamfusion
dsyuan0012 天前
ak-design 仿钉钉流程设计引擎图
钉钉·状态模式
国科安芯3 天前
轨道供电韧性:ASP4644四通道降压架构在低轨卫星平台电源管理中的适用性分析
运维·网络·数据库·嵌入式硬件·架构·状态模式·低轨卫星星座
听风吹等浪起4 天前
004:多个PDF合并成一个PDF【网页版】
pdf·状态模式