潜水阿宝 2023-08-03 17:28 采纳率: 57.1%
浏览 9
已结题

项目中数据字典对于重复的字典值是怎么查询的?

背景:最近想练手后台项目类型的系统,于是参照若依后台管理系统,对于其数据字典有一些疑问。
问题:数据字典在查询的时候是如何关联并且准确的查找到正确的字典数据的?
问题描述:都知道0和1在数据字典中比较常用,比如:性别、禁用启用状态、开关等等,不可避免的可能需要复用,那么如何区分我们需要的是什么字典结果呢?
我查看若依的数据库,发现他的字典数据中有很多0和1,那么他们是如何区分的呢?

img

假设:有一张用户表,里面的性别使用的0和1,我们在查找字典的时候,这么多0和1我们如何区分哪一个是表示性别的?
然后我又发现若依还有一个字段:字典类型

img

于是我猜测这个就是区别这么多重复使用字典数据的关键,这是他的字典类型表

img

于是我猜测,如果我要查询用户性别,那么就拿着用户表记录的0或者1再添加一个查询条件:“sys_user_sex”就能查询到到具体的字典数据。
但是我并不知道这个想法是正确还是错误的,假设若依确实是这样做的。那么他是怎么知道这个添加的条件的?例如:查询性别的时候,他怎么知道需要添加的条件是“sys_user_sex”,查询菜单状态的时候,他又是怎么知道要添加条件“sys_show_hide”之类的,如果将这个条件写死在Java程序中,那确实能够解决这个问题,但是那不就成了硬编码了吗?如果数据字典类型数据发生改变,总不能改动源代码把?那么如何能保证数据字典的灵活性和准确性的?
这个问题困扰了我好久,到现在也没有解决,希望有人能够解惑

  • 写回答

3条回答 默认 最新

  • 喝茶品人生 2023-08-03 17:57
    关注

    首先,数据字典的查询是通过关联字典类型和字典值来实现的,字典的值是具体的字典项。
    比如我们自己设定一个user,性别字段使用的是0和1来表示(这个不用多说,后台数据库怎么设计表格我想你是了解的),这时候系统里同步会有一个字典类型表包含了字典类型的编码、字典类型的名称等。"sys_user_sex"这个记录对应着性别这个字典类型。
    然后,在字典数据表中,会有一条记录对应着性别为男的字典项,它的字典值为0,并且与字典类型表中的性别字典类型关联起来。同样地,字典数据表中会有一条记录对应着性别为女的字典项,它的字典值为1,并且也与字典类型表中的性别字典类型关联起来。
    我想查用户性别字典数据时,就得找编码为"sys_user_sex"的记录,得到字典类型的id。在根据字典类型的id去字典数据表中查询与之关联的字典项。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月4日
  • 修改了问题 8月3日
  • 创建了问题 8月3日

悬赏问题

  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求