一、本次Daily Scrum Meeting主要内容
- 各队员的任务完成情况
- 文件选择器布局只是暂时使用,后期会改方式,放在后面解决。
- 接下去都要做什么
二、项目进展
学号尾数 | 今日已完成任务 | 接下去要做 |
---|---|---|
502 | 在手机端解析Json数据,并插入手机数据库 | 将数据库的数据转换成Json数据,并发送到服务器;在服务器上解析Json数据 |
509 | 解决生成数据库样例数据的类的BUG | 写出服务器插入数据到数据库教师表的API |
517 | 解决日期选择器BUG | 绑定数据库的数据到界面:报课表显示界面及点击报课表后的弹窗; |
530 | 绑定数据库的数据到界面:教师列表界面 | 绑定数据库的数据到界面:教师详情界面;根据选择的xls文件,导入到教师表 |
三、Burndown Chart
11/10补上正确的燃尽图:
四、遇到的困难
-
在手机上解析Json数据,然后插入数据库碰到了问题(已解决)。因为我们数据库的操作是使用开源框架来完成的,而用这个框架插入数据到数据库的时候,要求数据是整个pojo类。因此解析服务器发过来的Json数据,就需要绑定到一个类上面。
- 如果简单粗暴的调用set方法或者构造方法将Json数据放到一个pojo类里面,那么需要在解析Json数据的时候,逐个取出数据。这样就不能保证良好的扩展性,到时候数据库有改变,得改很多地方。而且代码会很冗余。
- 上网查资料,最终决定使用Gson来解析Json数据。当Json一次性包含了多个数据库行的时候,可以直接解析为List。只要在解析的时候,将pojo作为参数传入,它会自动将数据对应起来。这样得到的就是一个pojo的List。这样不仅具有良好的扩展性,而且代码简洁。在服务器数据库表结构改变的时候,只需要改pojo类里的内容,就既可以让本地数据库同时改变,又可以在解析Json的时候获得正确的结果。
-
对于数据库的操作,碰到了问题(已解决)。因为是用开源框架来操作的,对pojo类的要求比较严格。这一点一开始没注意到,geter 和 seter 方法的名字在改动的时候没有那么在意,就没同步更新名称。这导致在插入数据库的时候,发生了错误,无法插入数据。试了各种方法,最后发现只要重置seter和geter就行了。(509同学简直要疯了,一整天空余时间没有复习过两天要考的科目,都耗在这上面(ಥ _ ಥ))
五、体会
509:
- 框架能避免我们写一大堆自定义模块来实现我们要的东西,框架能节省我们不少的时间和精力,但前提是你要彻彻底底的学会如何使用框架,而学习也需要花比较多的时间,不过只要学会使用框架之后,将是终生的受益。但我觉得使用框架最大的缺点就是如果使用框架而出现错误,将很不好找出原因,毕竟我们并不了解框架的内部结构,只能通过一些经验和尝试去排除错误。
- 这次编写本地数据库使用的是afinal框架,在编写之前也花了好些时间学习,但学完之后花了不到两小时就把本地数据库的类给写好了。本来以为没问题了,但在用数据库类写初始化数据库类时还是发现了严重的问题:有三个表的主键在不能插入表的情况下其它数据居然能插入表中,这然我很不知所措,因为文档上说将数据插入表时必须要有主键,不然无法插入。
- 我先去查看用于创建数据表的实体类(afinal是通过实体类来创建表的),发现没什么错误。于是又拿之前哪来测试的实体类(经测验次实体类能正确插入数据)来对比,也没发现什么不同。后来又设想了好几种错误进行排查,比如将数据表的名字换成跟实体类的名字一样(结果发现还是没用),在排除了几乎所有可能错误的假设之后还是没发现错误在哪,最后在舍友提议下将实体类中的setter方法(用来插入数据和更新数据)从新编写,将方法名设置成和变量名一样,结果居然能将数据正确插入了。虽然不知道为什么要这样,但是解决了问题还是很激动,不过回想起来居然会错在这种令人想不到的地方(因为感觉方法名字并不会影响到什么),而花了那么多时间又很心累。想了想,以后要是自己有实力,能自己写的东西还是尽量不要再用框架的好。