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

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

常规来说,数据库一个字段叫at_home(0=不在家,1=在家,2=不知道)。对于后端开发者来说,可以选择将状态整理为枚举、常量(比如在更新XX记录的时候,设置at_home状态的XXX.OK 就能在代码层面看到状态的含义)也可以不处理,直接使用数字代替。但是对于前端来说at_home,也是写死枚举值,后台告诉前端是数字0=不在家,1=在家,2=不知道。所以不用数据字典完全对业务没任何问题!

如果at_home有了一个新状态 3=在老王家,系统为了满足这个功能,前端,后端都需要修改代码。但是如果不想修改前端代码。可以选择直接在数据库修改。数据字典的优势就在这里体现出来了! 字典的优势就针对于前端状态读取数据库的数据而已,数据字典对于后端无任何效益!

建表

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

注意,我再xxx_dict_detail补充了一个字段sort_value。用于排序的!

-- 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 '描述',
  `sort_value` bigint(20) DEFAULT 0 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=?
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤