标签:color key btree 编号 code derby 整理 主键 orderby
能力库界面如下:
相关数据库表:
1 CREATE TABLE `base_ability` ( 2 `abillty_id` varchar(36) NOT NULL DEFAULT ‘‘ COMMENT ‘主键‘, 3 `ability_code` varchar(20) DEFAULT NULL, 4 `ability_name` varchar(20) DEFAULT NULL COMMENT ‘能力编号‘, 5 `ability_name_desc` varchar(255) DEFAULT NULL COMMENT ‘能力名称‘, 6 `orderby` int(11) DEFAULT NULL, 7 `status` int(11) DEFAULT ‘1‘, 8 PRIMARY KEY (`abillty_id`), 9 KEY `ability_code` (`ability_code`) USING BTREE 10 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘能力项表‘; 11 12 CREATE TABLE `base_ability_layer` ( 13 `ability_layer_id` varchar(36) NOT NULL DEFAULT ‘‘ COMMENT ‘主键id‘, 14 `ability_code` varchar(36) DEFAULT ‘‘ COMMENT ‘能力项主键id‘, 15 `ability_dim` varchar(255) DEFAULT ‘‘ COMMENT ‘维度‘, 16 `ability_layer_code` varchar(255) DEFAULT ‘‘ COMMENT ‘层级代码‘, 17 `ability_layer_desc` varchar(5000) DEFAULT ‘‘ COMMENT ‘层级描述‘, 18 `evaluation_library_id` varchar(36) DEFAULT ‘2‘, 19 PRIMARY KEY (`ability_layer_id`), 20 KEY `ability_code` (`ability_code`,`ability_layer_code`) USING BTREE 21 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘能力项层级‘; 22 23 CREATE TABLE `sys_dictionary` ( 24 `dictionary_id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘数字字典id‘, 25 `name` varchar(20) DEFAULT NULL COMMENT ‘数据字典名称‘, 26 `code` varchar(20) NOT NULL COMMENT ‘数据字典code‘, 27 `type` varchar(50) NOT NULL COMMENT ‘数据字典类型‘, 28 `dictionary_order` int(11) DEFAULT ‘1‘ COMMENT ‘排序‘, 29 `status` int(11) DEFAULT ‘-1‘ COMMENT ‘状态 0不显示前台,1显示前台‘, 30 `remark` varchar(100) DEFAULT NULL COMMENT ‘备注‘, 31 `edit` tinyint(4) DEFAULT ‘0‘ COMMENT ‘是否允许修改 1允许,0否‘, 32 `effective` tinyint(1) DEFAULT ‘1‘ COMMENT ‘1启用0删除‘, 33 PRIMARY KEY (`code`,`type`), 34 UNIQUE KEY `dictionary_id` (`dictionary_id`) 35 ) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8 COMMENT=‘系统数据字典表‘;
base_ability 能力项表
base_ability_layer 能力项等级表
基本变量表sys_dictionary:
思路:1.一个能力项对应若干个等级的时候,等级信息应该用List保存,List中每个元素为一个实体类,保存等级相关信息,尽量避免用Map,防止增加字段无法处理。
2.当一个SQL语句不能顺利构造出需要的数据结构,那就使用两条,使用两条逻辑更清晰。在Service层进行数据的处理,本例就一个SQL语句查询查询能力项公用信息,一个SQL语句查询能力项的等级信息,再在Service层进行整理在一起。
3.此次SQL语句查询思路特殊,需要将在base_ability_layer表里没出现的等级也要显示在列表中,等级描述为‘/’。按照惯例写SQL的思路,base_ability肯定要先和base_ability_layer关联,在与sys_dictionary关联,但是这样的话得到的结果就只有ability已有的等级而没有的等级不会返回空,无论怎么外联接也无济于事。这次要反其道而行之,base_ability要先和sys_dictionary关联,在与base_ability_layer关联,这样就能达到要求。虽然只是很简单的一个变化,但是困扰自己半天的难题突然开窍的感觉还是很奇妙的!
标签:color key btree 编号 code derby 整理 主键 orderby
原文地址:http://www.cnblogs.com/BrightFeng/p/6555673.html