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

2019-05-02 21:04:11 +08:00
 yuandfish

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/560594

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX