当前位置: 首页 > 期刊 > 《医学信息》 > 2019年第4期
编号:13425888
Key-Value键值对数据在新生儿听力筛查登记系统中的应用(2)
http://www.100md.com 2019年1月29日 《医学信息》 2019年第4期
     第三步:利用REPEAT …UNTIL …END REPEAT循环读取所选报告单模板字段配置,利用数据库系统函数CONCAT及GROUP_CONCAT生成动态查询语句,完成数据的行列转换并输出显示。CONCAT函数主要完成字符串的拼接,GROUP_CONCAT函数主要作用是完成行合并。其实现代码如下所示:

    第四步:利用Hibernate的createStoredProcedureCall方法调用指定名称的存储过程,通过procedureCall.getOutputs().getCurrent()获取ResultSetOutput结果,最终通过ResultSetOutput获取到datagird的list数据列表,OUT模式的totalcount参数则用于分页,并展示到前台界面。

    采用存储过程实现的数据展示简化了系统的Java编程,意味着部分业务逻辑不再应用程序中处理,同时所有的记录检索等操作都是通过存储过程实现,因此采用存储过程编程技术的实现减少了网络交互,而由于不同数据库的内部编程语法不太一致,导致了系统不具备可移植性。
, 百拇医药
    2.2 JAVA编程利用JAVA8的新特性实现 JAVA函数式编程主要利用对核心类库的集合类的API和新引入的流(Stream)[6]的改进来实现数据的展示功能,其实现主要步骤如下:

    第一步:通过Service层接口调用自定义函数getDataByTemplateId(String id),该函数的主要功能是获取传入的指定登记模板的ID来获取数据存储实体表中符合条件的所有记录,其返回结果为List列表对象。

    第二步:通过Stream API处理数据集合,使用collect来将一个数据流中的元素进行分组,由于在数据存储表中同一报告单的一次表单提交数据是使用的UUID.randomUUID()生成的唯一标识,通过collect中的数据分组将产生Map的结果,其实现代码如下:

    Map> datamap=lists.stream().collect(
, http://www.100md.com
    Collectors.groupingBy(Data::getRowid));

    在实现代码中,应用了定义在辅助类Collects中的groupingBy收集器,它通过接收Data实体的getRowid分类方法,并生成Map结果,其中getRowid方法返回的结果将作为Map的Key,符合条件的分类lists集合记录将作为Map的Value。

    第三步:申明空的list对象List> datalist=new ArrayList>(),用于存储最终的数据结果。

    第四步:申明迭代器Iterator,用于循环读取datamap中的内容,申明语句如下:

    Iterator>> it= datamap.entrySet().iterator();
, http://www.100md.com
    第五步:使用while循环读取迭代器中的内容,并将一组list内容通过forEach循环读取并put到新申明的map对象中,最后将最终结果使用add加入到第三步中的datalist,到此完成了同一报告单的数据分组及数据的行列转换展示,java代码如下所示:

    3总结

    利用Key-Value键值对格式有效的解决了不同报告单内容字段不一致而无法存储在关系数据库的同一数据实体表中的存储问题,同时Key-Value键值对格式的存储还为数据的查询及统计分析提供了便利。在数据的展示实现过程中,既可利用数据库的存储过程编程技术实现又可利用JAVA8的函数式编程实现。存储过程的实现简化了JAVA编码,利用传入的conditions参数,先检索符合条件的rowid值,通过rowid值快速查询有效的数据,并对数据执行行列转换及行合并的操作,利用存储过程的实现增加了数据库服务端的处理成本,大量逻辑业务的处理约束了软件的架构。利用JAVA8的新特性实现数据展示仅需数据库实体表,无需实现自定义函数及存储过程,同时在系统发布过程中可以做到多web容器部署,从而实现负载均衡。
, 百拇医药
    参考文献:

    [1]黎曼侬,王琼,党峰博,等.新生儿疾病筛查信息系统管理软件应用的效果分析[J].中国医学工程,2014(1):186-188.

    [2]徐宝磊,罗江,潘刚.基于JSON的數据交换技术应用研究[J].软件导刊,2017,10(16):173-175.

    [3]蒋付彬,王华军.NoSQL数据库的应用及选型研究[J].信息与电脑(理论版),2016(3):141-142.

    [4]王志刚,江友华.MySQL高效编程[M].北京:人民邮电出版社,2012:116-128.

    [5]梁敬彬.探讨动态SQL扩展的应用[J].福建电脑,2018,34(3):92-94.

    [6]Richard Warburton,著.Java8函数式编程[M].王群锋,译.北京:人民邮电出版社,2015:15-31.

    [7]宫明.函数式编程探析[J].电脑编程技巧与维护,2017(3):29-30.

    收稿日期:2018-11-12;修回日期:2018-11-22

    编辑/杨倩, http://www.100md.com(黎勇 易松 邓忠)
上一页1 2