首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据字典

数据字典

作者头像
收心
发布2023-02-22 15:29:55
6700
发布2023-02-22 15:29:55
举报
文章被收录于专栏:Java实战博客Java实战博客

本页目录

我个人是比较讨厌数据字典这个功能的,前期十分抵触这个功能,但是京东项目强制要求使用数据字典。于是整理一下数据字典这个功能与概念。

什么是数据字典?为啥要用数据字典?

常规来说,DB一个字段叫at_home,0=不在家,1=在家,2=不知道。对于后端开发者来说,有的收集为枚举、常量(方便比如再更新记录的时候,设置at_home状态的XXX.OK 就能在代码层面看到状态的含义),或者干脆不处理,直接使用数字代替。但是对于前端来说at_home,也是写死枚举值,后台告诉前端是数字0=不在家,1=在家,2=不知道。不用数据字典完全没啥问题!

如果at_home有了一个新状态 3=在老王家,系统为了满足这个功能,前端,后端需要修改源代码(如果正在开发中,加一个状态无所谓)。但是如果不想修改前端代码的状态值,而是在数据库修改同步前端变更,数据字典的优势就体现出来了!

建表

字典英文是:迪克西闹瑞 dictionary。我们表名为dict

-- DROP TABLE IF EXISTS `xxx_dict`;
CREATE TABLE `xxx_dict` (
  `created_by` varchar(60) DEFAULT NULL COMMENT '创建人',
  `created_time` datetime DEFAULT NULL COMMENT '创建时间',
  `updated_by` varchar(60) DEFAULT NULL COMMENT '更新人',
  `updated_time` datetime DEFAULT NULL COMMENT '更新时间',
  `id` bigint(20) NOT NULL COMMENT '主键',
  `name` varchar(60) DEFAULT NULL COMMENT '名称',
  `code` varchar(60) DEFAULT NULL COMMENT '编码',
  `description` varchar(128) DEFAULT NULL COMMENT '描述',
  `status` varchar(10) DEFAULT NULL COMMENT '状态',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='数据字典表';


-- DROP TABLE IF EXISTS `xxx_dict_detail`;
CREATE TABLE `xxx_dict_detail` (
  `created_by` varchar(60) DEFAULT NULL COMMENT '创建人',
  `created_time` datetime DEFAULT NULL COMMENT '创建时间',
  `updated_by` varchar(60) DEFAULT NULL COMMENT '更新人',
  `updated_time` datetime DEFAULT NULL COMMENT '更新时间',
  `id` bigint(20) NOT NULL COMMENT '主键',
  `dict_code` varchar(60) NOT NULL COMMENT '数据字典code',
  `value` varchar(60) DEFAULT NULL COMMENT '值',
  `description` varchar(1024) DEFAULT NULL COMMENT '描述',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='数据字典明细';

需要加入的接口

字的标识是code,字的详情是详情表的dict_code = 字典表的code。

字典表操作

添加字典中的字

判断字典是否存在(也可以无需判断,直接插入,如果报错直接终止添加字典信息)
SELECT id,name,code,description,created_by,created_time,updated_by,updated_time FROM base_dict WHERE (code = ?)
字 插入字典
INSERT INTO base_dict ( id, name, code, description, created_by, created_time, updated_by, updated_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )

详情表操作

添加给字典中的字添加详情

INSERT INTO base_dict_detail ( id, dict_code, value, description, created_by, created_time, updated_by, updated_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )

前端获取下拉列表(字典详情表,无需连表查询)

SELECT id,dict_code,value,description,created_by,created_time,updated_by,updated_time FROM base_dict_detail WHERE (dict_code = ?)

修改字典中字的详情

UPDATE base_dict_detail SET dict_code=?, value=?, description=?, updated_by=?, updated_time=? WHERE id=?

删除字典中的字详情

DELETE FROM base_dict_detail WHERE id=?

特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是数据字典?为啥要用数据字典?
  • 建表
  • 需要加入的接口
    • 字典表操作
      • 添加字典中的字
    • 详情表操作
      • 添加给字典中的字添加详情
      • 前端获取下拉列表(字典详情表,无需连表查询)
      • 修改字典中字的详情
      • 删除字典中的字详情
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档