项目整理一:数据库设计
来源:互联网 发布:什么电台软件好听 编辑:程序博客网 时间:2024/06/06 08:51
设备管理平台,支持不同设备种类的管理,如蒸汽表、燃气表、水表等。为了满足这种需求,数据库设计时,对设备信息相关的表的属性字段采用的方式时:设置10个double column,10个int column,10个String column,5个date column,这由设备基本信息的数据类型决定的。还有一张字段映射表column_map_info_t,即对于设备信息相关的表中的各个类型字段具体表示的名称和含义进行映射说明。
如device_info_t的doubleCol1字段,在column_map_info_t这张表中通过tableName、columName和deviceType(表示不同的设备类型),就找到了device_info_t的doubleCol1的具体描述,为瞬时流量。
运用反射
通过字段名来获取get方法
界面上的组件进行配置,如报表的表头需要显示瞬时流量、压力、温度、累计流量、压差等,配置后,根据组件名称、设备类型和table_name到widget_map_info_t表中找到对应的字段描述。通过字段描述和table_name到column_map_info_t表中找到具体的字段名。取得字段名后,就可以通过反射来获得get方法,
从而去到该字段的值。
缺点:数据库设计时要预留足够字段,无疑占用了更多的空间。同时对数据库的表进行操作时,需要先查找映射表,才能得出具体的字段信息,I/O消耗增加。优点:可以对信息进行配置,支持多种设备的管理,能更好的满足客户的定制化需求。
优化:
这里用HashMap把已经获得字段名和相应的get方法的对应关系存在内存中,避免多次查询请求,减少消耗,加快速度。
public static Method getMethodByFieldName(Object obj,String filed){ Class clazz = obj.getClass(); String methodName = clazz.getName()+".get"+filed.replace(filed.substring(0, 1), filed.substring(0, 1).toUpperCase()); LogUtils.info(methodName); if(methodHashMap.get(methodName)!=null) return methodHashMap.get(methodName); PropertyDescriptor pd; try { pd = new PropertyDescriptor(filed,clazz); Method getMethod = pd.getReadMethod();//获得get方法 methodHashMap.put(methodName, getMethod); return getMethod; } catch (IntrospectionException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
- 项目整理一:数据库设计
- 数据库设计问题整理
- 数据库知识点整理一
- 局域网LanQQ聊天项目(一)数据库与通信协议设计
- 数据库知识整理(一)
- 项目小结---数据库设计
- 项目数据库设计小结
- 项目中数据库设计
- 项目数据库设计
- 数据库设计技巧(一)
- 数据库设计_(一)
- 一:设计数据库应用程序
- 数据库设计示例一
- 数据库设计(一)
- 数据库设计一《基本概念》
- 数据库设计(一)
- 数据库设计(一)
- 数据库设计原则一
- object detection
- 矩阵快速幂求Fibonacci数
- 表单 语义化标签
- 计算机视觉学习总结
- 六周第一次课 2017.11.20 正则介绍_grep上、grep中、grep下
- 项目整理一:数据库设计
- spring数据校验
- SVN的学习之路七(锁的设置和解除)
- python2的编码问题(因split处理文件深入的)
- 国际大公司到国内大公司的思考
- 再谈“我是怎么招聘程序员的”
- 00.开源项目--git快速开始
- 《实战Java高并发程序设计》读后感
- 【解题报告】【USACO】Your Ride is Here你的飞碟在这儿