枚举的使用--------状态码转文字!!!(表格数字转文字)

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

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

        2.1 写一个枚举,用于描述状态的意思
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, "上架"),
    OF
### 枚举类型与VARCHAR类型的比较 #### 优点和缺点分析 对于枚举类型而言,在处理一组固定值时非常有用,但是也存在一些独特之处[^1]。当使用ENUM类型时,其优势在于能够节省空间并提高查询效率,因为数据库会将字符串映射到内部整数表示上。然而,如果频繁修改列表中的选项,则可能导致表结构变化复杂化,并且在某些情况下可能引起性能下降。 相比之下,VARCHAR是一种变长字符数据类型,可以灵活地存储不同长度的文字串而无需预先定义固定的取值范围。这使得它更适合用于那些未来可能会增加新成员或者不确定全部可能性的情形下。不过需要注意的是,虽然VARCHAR允许更大的灵活性,但它通常占用更多的磁盘空间来保存实际内容,并且在执行查找操作时速度较慢于预设好的ENUM类型[^5]。 #### ENUM的具体局限性和注意事项 值得注意的是,在创建和使用ENUM过程中存在着若干潜在的问题需要特别关注: - 不应该采用数字形式作为枚举项,以免造成字面上的含义与其对应的内部序号之间的混淆; - 当涉及到`ORDER BY`子句排序时需格外小心,由于默认按照定义顺序而非字母先后排列; - 存储NULL或空白记录也可能带来意想不到的结果; - 排序行为不符合预期的风险较高; - 支持的操作相对有限,比如难以实现动态增删可选项目等功能[^3]; #### 场景适应性考量 根据不同的应用场景选择合适的数据类型非常重要。例如,在MySQL环境中,针对特定业务逻辑下的状态码、性别分类等已知且稳定不变的选择集非常适合应用ENUM类型来进行建模设计[^4]。而对于像产品名称、用户评论之类具有高度不确定性以及随时可能出现新增条目的字段则更倾向于选用VARCHAR以保持系统的弹性和扩展能力。 ```sql -- 创建带有ENUM类型的表格示例 CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, status ENUM('pending', 'shipped', 'delivered') NOT NULL ); -- 插入一条订单记录 INSERT INTO orders (status) VALUES ('pending'); -- 查询所有待发货订单 SELECT * FROM orders WHERE status = 'pending'; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值