本页目录
我个人是比较讨厌数据字典这个功能的,前期十分抵触这个功能,但是京东项目强制要求使用数据字典。于是整理一下数据字典这个功能与概念。
常规来说,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=?
特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!