请教,像性别、状态这些字段,表里存的是 code 不会存中文,那么在列表展示的时候,有什么方法可以既方便又高效地取出数据吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuandfish
V2EX    Java

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

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

    开启一个新项目,本来想用 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
    前端翻一下就好了啊
    itechify
        16
    itechify  
    PRO
       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     Solana     2506 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 05:12 PVG 13:12 LAX 21:12 JFK 00:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86