V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuandfish
V2EX  ›  Java

请教,像性别、状态这些字段,表里存的是 code 不会存中文,那么在列表展示的时候,有什么方法可以既方便又高效地取出数据吗?

  •  
  •   yuandfish · 2019-05-02 21:04:11 +08:00 · 4166 次点击
    这是一个创建于 2039 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开启一个新项目,本来想用 Spring JPA,但是发现取列表数据这种场景很麻烦,请教一下大家,感谢

    18 条回复    2019-05-23 17:22:27 +08:00
    est
        1
    est  
       2019-05-02 21:05:57 +08:00 via Android
    还得考虑多语言问题
    yuandfish
        2
    yuandfish  
    OP
       2019-05-02 21:07:49 +08:00
    @est 用的是 Java,所以特地放到 Java 节点下了
    learnshare
        3
    learnshare  
       2019-05-02 21:08:50 +08:00   ❤️ 1
    @yuandfish 多语言讲的是国际化和本地化,不是开发语言
    wc951
        4
    wc951  
       2019-05-02 21:11:31 +08:00 via Android
    jpa 支持枚举字段啊
    yuandfish
        5
    yuandfish  
    OP
       2019-05-02 21:24:08 +08:00 via iPhone
    @learnshare 哦哦,那些暂时不考虑
    yuandfish
        6
    yuandfish  
    OP
       2019-05-02 21:50:33 +08:00 via iPhone
    @wc951 试了下不错,那就是数据库里不需要字典表全部用枚举吗?
    passerbytiny
        7
    passerbytiny  
       2019-05-02 22:18:15 +08:00 via Android
    枚举也罢,代码也罢,中文也罢,数据库中存得都是它的抽象,不是实际显示。怎么显示,应该是前端或视图层考虑的事。
    yuandfish
        8
    yuandfish  
    OP
       2019-05-02 22:29:01 +08:00 via iPhone
    @passerbytiny 因为 js 部分我也写,所以不得不想出一个简便的办法
    araaaa
        9
    araaaa  
       2019-05-02 23:48:30 +08:00 via iPhone
    我们用数据字典,对应数据全从 redis 拿
    Allianzcortex
        10
    Allianzcortex  
       2019-05-03 00:04:58 +08:00
    如果前端不做处理的话,可不可以考虑后端用一个表存储数字与性别对应关系(gender_relationship {0 : female , 1 : male}),根据 model 再定义一个 DTO,查询的时候原表与关系表 join 一下直接返回的 DTO 就是在前端展示的数据。用 redis 存储查询会快但写起来复杂些。
    yuandfish
        11
    yuandfish  
    OP
       2019-05-03 09:02:54 +08:00 via iPhone
    @Allianzcortex 这样的话那就要定义很多个只有固定几行的表了,以及定义多个 DTO,代码编写上略繁琐
    cyspy
        12
    cyspy  
       2019-05-03 10:40:45 +08:00
    这种事应该交给前端部分来做。不要怕麻烦,你现在可能只想在列表里显示男女,下次可能变成了男性女性,再下次可能是英文或者符号,即使硬编码也比用维度表 JOIN 好
    Allianzcortex
        13
    Allianzcortex  
       2019-05-03 20:03:48 +08:00 via iPhone
    @cyspy 维度表 join 也可以随时更改对外显示的字段,本质上还是外部配置文件呀
    cyspy
        14
    cyspy  
       2019-05-03 22:02:38 +08:00
    @Allianzcortex 如果两种不同的显示方式同时出现的话,需要维度表加字段+改代码,不如直接代码做了。另外 JOIN 很多个表的话我不太信任 MySQL 的优化能力
    limuyan44
        15
    limuyan44  
       2019-05-04 03:28:04 +08:00 via Android
    前端翻一下就好了啊
    oneisall8955
        16
    oneisall8955  
       2019-05-07 22:34:10 +08:00 via Android
    1,枚举+修改序列化将含义也序列化到 json
    2,枚举+前端转义
    yuandfish
        17
    yuandfish  
    OP
       2019-05-08 09:15:15 +08:00 via iPhone
    @oneisall8955 嗯,目前采用了第一种方式
    eefnrowe
        18
    eefnrowe  
       2019-05-23 17:22:27 +08:00
    以我的经验都是枚举转换, 至于给出的结果是 code 还是中文, 可以根据接口分, 比如 1 接口 VO 是返回 code, 2 接口 VO 是返回中文
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1041 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:14 · PVG 07:14 · LAX 15:14 · JFK 18:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.