毕业设计阶段遇到的一些技术问题

现在正值毕业设计阶段,在做项目的过程中,因为框架不熟练,遇到了许多问题,现在借以记录。

一、Mybatis的映射模型

1.项目中,我的Bean采用的是多层嵌套方式

这样导致在动态取值时,需要运用.的方式进行取值(#{managerBean.m_id})

2.Mybatis使用一对一映射方式有ResultType以及ResultMap。

在我的Bean结构模式下,因为多层嵌套,使之映射到属性的时候存在问题,所以我开始想办法

(1)应用ResultMap,将映射关系清楚地表明

 1 <resultMap id="getHisInfoListMap" type="com.gdmu.hnrs.model.ComplexBean" >
 2         <association property="patientBean" javaType="com.gdmu.hnrs.model.PatientBean">
 3            <id property="p_id" column="p_id"/>
 4            <result property="p_name" column="p_name"/>
 5         </association>
 6         <association property="foodBean" javaType="com.gdmu.hnrs.model.FoodBean">
 7            <id property="f_id" column="f_id"/>
 8            <result property="f_name" column="f_name"/>
 9         </association>
10         <association property="diseaseBean" javaType="com.gdmu.hnrs.model.DiseaseBean">
11            <id property="d_id" column="d_id"/>
12            <result property="d_name" column="d_name"/>
13         </association>
14         <association property="historyListBean" javaType="com.gdmu.hnrs.model.HistoryListBean">
15            <result property="l_time" column="l_time"/>
16         </association>
17 </resultMap>

但这样出现一个错误,我的SQL语句原本应该拿到6条数据,但这样写返回的却只有一条

通过上网查询,得知在ResultMap中应指定id,与表对应,这样Mybatis才知道数据的唯一性,而我这样就会被最后一条数据覆盖。(但是我的结构不允许我用这种方法操作,所以pass)

(2)应用ResultType,但返回值类型用java.util.Map,将数据全部存储到了Map中(List<Map<String,Object>>),这样虽然说确实取到了数据,但由于我的业务需要,在Service层不得不写了一段很low的代码将其重新组装成Bean

 1 public List<ComplexBean> getHisInfoList(ComplexBean complexBean) {
 2         List<ComplexBean> models = new ArrayList<ComplexBean>();
 3
 4         List<Map<String, Object>> tempList = managerMapper.getHisInfoList(complexBean);
 5         for(Object ob:tempList){
 6             HashMap hp = (HashMap)ob;
 7             //拿到键值对迭代器(hp.entrySet()拿到键值对集合)
 8             Iterator iter = hp.entrySet().iterator();
 9             //创建临时对象
10             ComplexBean tempComplexBean = new ComplexBean();
11             FoodBean tempFoodBean = new FoodBean();
12             PatientBean tempPatientBean = new PatientBean();
13             DiseaseBean tempDiseaseBean = new DiseaseBean();
14             HistoryListBean tempHistoryListBean = new HistoryListBean();
15             while (iter.hasNext()) {
16                 //拿到键值、val值
17                 Entry entry = (Entry) iter.next();
18                 Object key = entry.getKey();
19                 Object val = entry.getValue();
20
21                 if("L_TIME".equals(key)){
22                     tempHistoryListBean.setL_time((Date)val);
23                 }
24                 if("F_ID".equals(key)){
25                     tempFoodBean.setF_id((String)val);
26                 }
27                 if("F_NAME".equals(key)){
28                     tempFoodBean.setF_name((String)val);
29                 }
30                 if("D_ID".equals(key)){
31                     tempDiseaseBean.setD_id((String)val);;
32                 }
33                 if("P_NAME".equals(key)){
34                     tempPatientBean.setP_name((String)val);
35                 }
36                 if("D_NAME".equals(key)){
37                     tempDiseaseBean.setD_name((String)val);
38                 }
39                 if("P_ID".equals(key)){
40                     tempPatientBean.setP_id((String)val);;
41                 }
42                 tempComplexBean.setPatientBean(tempPatientBean);
43                 tempComplexBean.setDiseaseBean(tempDiseaseBean);
44                 tempComplexBean.setHistoryListBean(tempHistoryListBean);
45                 tempComplexBean.setFoodBean(tempFoodBean);
46             }
47             models.add(tempComplexBean);
48         }
49         return models;
50 }

因为现在正值工作和毕业设计的双重压力,没有多余的时间改造,等闲下来一定要重新改造!!!

时间: 2024-10-21 03:07:11

毕业设计阶段遇到的一些技术问题的相关文章

毕业 3 年,为何技术能力相差越来越大?——转自阿里技术人生

为什么你的知识积累不了? 有些知识看过就忘.忘了再看,实际碰到问题还是联系不上这个知识点.这其实是知识的积累出了问题,没有深入理解好,自然就不能灵活运用,也就谈不上解决问题.大家一起看相同的高考教科书但是高考结果不一样,问题出在了理解上.每个人的理解能力不一样(智商),绝大多数人对知识的理解要靠不断地实践(做题)来巩固. 同样实践,效果不一样? 同样工作一年碰到了 10 个问题(或者说做了 10 套高考模拟试卷),但是结果不一样,那是因为在实践过程中方法不够好.或者说你对你为什么做对了,为什么做

2014技术总结

2014年,毕业的第四年,技术感觉遇到了瓶颈.整天只会写写crud.偶尔写写其他语言的hello world.写写博客,聊以安慰. 新公司,新契机 不同点 NL ND IDE eclipse idea JDK 5 7 js jquery knockoutjs 开发框架 ssh(spring2.5+hibernate3) sh(spring4+hibernate5) 代码管理 svn git 项目管理   maven 表格第二列是上家,第三列是目前的公司 传统行业VS互联网 也许是这些新鲜血液的注

别被技术绑架

版权所有foruok,网站转载请务必保留出处,微信订阅号转载请先联系我. 通常我们说程序员需要在某个技术方向上积累到一定的厚度,要能够运用技术有效地解决实际问题.可是当程序员在某一项技术上浸淫时间长了之后,却经常会出现另外的问题,那就是:看待问题时受限于自身的技术积累. 我打算从几个方面来谈这个话题. 一定有某一项技术最适合解决某个问题 有的人对 C++ 比较熟悉,在开始一个新产品或新项目,比如做一个 Android App ,就会考虑怎么用 C++ 来实现目标,于是就会去找可以用在移动端的 C

最受欢迎web前端技术总结

Web前端技术发展非常快,主流技术的进步.想想刚毕业那会用asp技术.目前,该网站已经非常少见主流应用. 后来的后来J2EE框架.然后SpringMVC声望,然而,最近的各种js框架广泛传播,Html5移动互联网非常丰富的开发引进,一些最新的文本web进行的汇总,让大家很多其它地了解.然后取其所长,避其所短.高速推出简约慷慨,维护方便,性能良好的个人站点. JavaScript MV*框架 在相当长的一段时间里,每一个程序猿都要学会怎样利用JavaScript来编写弹出一个警告框或查看是否包括@

Warning!程序员们小心被技术绑架

通常我们说程序员需要在某个技术方向上积累到一定的厚度,要能够运用技术有效地解决实际问题.可是当程序员在某一项技术上浸淫时间长了之后,却经常会出现另外的问题,那就是:看待问题时受限于自身的技术积累. 我打算从几个方面来谈这个话题. 一定有某一项技术最适合解决某个问题 有的人对 C++ 比较熟悉,在开始一个新产品或新项目,比如做一个 Android App ,就会考虑怎么用 C++ 来实现目标,于是就会去找可以用在移动端的 C++ 框架,比如 Qt ,比如 NDK + Native Activity

常用的大数据技术有哪些?

大数据技术为决策提供依据,在政府.企业.科研项目等决策中扮演着重要的角色,在社会治理和企业管理中起到了不容忽视的作用,很多国家,如中国.美国以及欧盟等都已将大数据列入国家发展战略,微软.谷歌.百度以及亚马逊等大型企业也将大数据技术列为未来发展的关键筹码,可见,大数据技术在当今乃至未来的重要性! 大数据学习QQ群:716581014 大数据技术,简而言之,就是提取大数据价值的技术,是根据特定目标,经过数据收集与存储.数据筛选.算法分析与预测.数据分析结果展示等,为做出正确决策提供依据,其数据级别通

毕业2年 Summary

本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/135 看了下去年写毕业一周年总结的时间:2017-6-16,今天是2018-7-28.拖延症似乎越来越严重了,而这中间我只写了6篇Blog,好吧,看来我懒病也越来越严重了. 做过之前没有做过的事情 用GO语言维护了一个小型分布式系统,用于订单状态流转.自从接手了这个系统,晚上睡觉总是提心吊胆的.机器宕机怎么办,会不会有内存泄露.中间出过2次算是比较重大事故. 不

技术面试老是有劲使不出,该怎么办?

又到了一年金三银四,回想到很多年前我刚参加工作时的面试经历,那时都是呆呆地等着面试官问问题,被问到一些自己并不熟悉的问题时要不就是思考半天也切不中要点,要不就只能无奈地回答并不清楚了.其实不管是经验不足的初级开发,还是面临更高要求的资深开发,在面试上都会有一样的困扰:如何在掌握的知识有限的情况下,完成好一场高质量的面试呢? 本文最适合以下几种情况的同学参考: 知识面有限的初学者 希望首次加入大公司的开发同学 面临技术深度要求的开发同学 虽然文中主要以后端开发为例介绍技术面试的准备方法,但是和其他

单片机应用编程技巧问答

1. C语言和汇编语言在开发单片机时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言.其主要优点是占用资源少.程序执行效率高.但是不同的CPU,其汇编语言可能有所差异,所以不易移植. C语言是一种结构化的高级语言.其优点是可读性好,移植容易,是普遍使用的一种计算机语言.缺点是占用资源较多,执行效率没有汇编高. 对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM.RAM.STACK等资源都有限,如果使用C语言编写,一条C语言指令编译