什么是数据字典

这是一段来自维基百科的解释:

数据字典(英语:data dictionary)是一个自动的或手动的存储数据元的定义和属性的文档。

指一组对数据流程图中的数据流、数据文件、数据项及处理逻辑进行定义描述的表格。

不难理解,从编程的角度想,数据字典就是程序中存储各种基础、通用属性的东西,类似于性别、用户类型、删除状态等常用的属性,都可以统一由数据字典进行维护。

为什么要数据字典

在没有数据字典的程序中,程序员们彼此约定好各个基础属性对应的数值,比方说0是启用、1是关闭,然后在各自在程序中建立常量类或枚举类来进行解析或判断,这么说来,似乎数据字典并没有存在的必要。

但是前后端分离的时代来临了。每个接口往往都会携带几个基础属性,当服务端开发人员返回各种属性对应的数字后,要么编写一份详尽的文档,要么由前端开发人员对接接口时一遍又一遍的咨询。但是很显然大家都不愿意写文档,那就只能循环你问我答环节。作为一个优秀的程序员,当然是能懒则懒,有什么办法能让服务端开发人员不用写文档,又能让前端知道属性值的含义呢?数据字典应运而生。

如何设计与开发

数据库设计

常见的数据字典表结构有两种。一种是单表结构,通过冗余类型字段实现单表的快速查询与维护。另一种是将类型和数据值拆分成两张表,配合缓存来实现高效查询,虽然有两张表,但是结构更清晰,更容易理解。

我们这边直接采用第二种设计方案。

-- 字典类型表
CREATE TABLE `sys_dict` (
  `id` varchar(32) NOT NULL,
  `dict_name` varchar(100) DEFAULT NULL COMMENT '字典名称',
  `dict_code` varchar(100) DEFAULT NULL COMMENT '字典编码',
  `description` varchar(255) DEFAULT NULL COMMENT '描述',
  `del_flag` int(1) DEFAULT NULL COMMENT '删除状态',
  `create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(32) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `type` int(1) unsigned zerofill DEFAULT '0' COMMENT '字典类型0为string,1为number',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `indextable_dict_code` (`dict_code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 字典数据值表
CREATE TABLE `sys_dict_item` (
  `id` varchar(32) NOT NULL,
  `dict_id` varchar(32) DEFAULT NULL COMMENT '字典id',
  `item_text` varchar(100) DEFAULT NULL COMMENT '字典项文本',
  `item_value` varchar(100) DEFAULT NULL COMMENT '字典项值',
  `description` varchar(255) DEFAULT NULL COMMENT '描述',
  `sort_order` int(10) DEFAULT NULL COMMENT '排序',
  `status` int(11) DEFAULT NULL COMMENT '状态(1启用 0不启用)',
  `create_by` varchar(32) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `update_by` varchar(32) DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  KEY `index_table_dict_id` (`dict_id`) USING BTREE,
  KEY `index_table_sort_order` (`sort_order`) USING BTREE,
  KEY `index_table_dict_status` (`status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

增删改查

无论是Mybatis还是JPA,亦或其他任何一种ORM,无非就是新增数据、删除数据、修改数据和查询数据。我们这边主要使用查询,包含几个简单的连表查询,代码上都非常简单,因此不再赘述,看官们可以根据后面的代码进行联想,我也会对每个查询方法进行详细的介绍。

AOP实现

// TODO 未完待续


本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

SpringBoot定时任务 上一篇
CentOS安装Hexo教程 下一篇