yuandfish
V2EX  ›  Java

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

  •  
  •   yuandfish · May 2, 2019 · 5221 views
    This topic created in 2743 days ago, the information mentioned may be changed or developed.

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

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