• 数据库中的枚举值如何存储


    首先不推荐使用enum类型的字段,原因可以参考:MySQL 枚举类型的“八宗罪”

    提出问题

    工作中,我们会经常用到枚举。例如性别(男、女)、星期(星期一 ~ 星期日)等。我们都会有如下的代码:

    public enum GenderEnum {
        MALE(1, "男"),
        FEMALE(0, "女"),
        ;
        private final int code;
        private final String desc;
        
        public GenderEnum(int code, String desc) {
            this.code = code;
            this.desc = desc;
        }
    }
    

    并且这个“性别”是需要随着用户信息落到DB进行存储的,那在DB中我们存储数字0、1,还是存储字符串男、女呢?

    分析问题

    存储数字0、1

    感觉这应该是大多数人采取的方式吧。此种方式有如下几个优点:
    1、节省DB空间(虽然现在内存空间已经不care了,但也勉强算一个优点吧)
    2、无需关注枚举对应到前端的展示内容,当展示内容改变时(例如展示为:先生、女士)无需改动。难道你还要刷DB的历史数据嘛?
    3、前端接收数值类型,更方便判断,并且展示内容改变时也无需改动。假如判断代码是 if (gender == '男') ,如果需要展示先生、女士的时候此处还需要改动。

    这种方式的最大缺点就是当你看到数值的时候,不清楚它表述的含义是什么(即使你是枚举定义者,也很难记住)。

    存储字符串男、女
    优缺点正好与上面相反。

    结论

    为了代码的扩展性、可维护性等,牺牲一下可读性吧,推荐大家存储数字。不要抱着侥幸心里以为展示内容不会变。如果真的变动了,你就真的惨了。

  • 相关阅读:
    2020面向对象程序设计寒假作业2 题解
    题解 P3372 【【模板】线段树 1】
    Global variant VS local variant
    u2u
    深入浅出PowerShell系列
    深入浅出WF系列
    debug
    深入浅出SharePoint系列
    InfoPath debug
    深入浅出Nintex系列
  • 原文地址:https://www.cnblogs.com/lvmengtian/p/14600154.html
Copyright © 2020-2023  润新知