我个人是比较讨厌数据字典这个功能的,前期十分抵触这个功能,但是京东项目强制要求使用数据字典。于是整理一下数据字典这个功能与概念。
什么是数据字典?为啥要用数据字典?
常规来说,数据库一个字段叫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博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤