经过一周的开发,项目情况也算是在有序推进,部分模块的功能已经开发完了,剩下的大部分库和表的设计已经完成,只剩下业务接口的开发。趁着周末总结一下,大概有三点体会,有两点是自己的不足,还有一个庆幸的事情。

前期过于乐观

因为疫情原因,一直到6月份,我才去公司办公,但是这个项目提出的时候比较早,早起的需求我也参与了讨论,大概功能心里比较明白,提前想了一些可能遇到的技术难点,再加上我之前也自己写过一些「springboot」的小工程,基本是提供一些测试过程中常用到「数据查询」「数据修改」的功能,本以为不会遇到太多技术难点。自我感觉对「springboot」这一套开发组件还是有一个基本的认知,即使遇到不会的问题基本都能知道怎么去搜索,也能对搜索结果做一个基本的判断。可惜现实太残酷,正式进入开发之后,各种「啪啪啪」打脸的事情,像之前写过的「mybatis」多表查询,从别的库查询结果结合参数写入,如果在「过滤器」中打印参数,如何设计使用「线程锁」等等。期间多次请教老同事和现同事各种技术类问题,得到了很多帮助。

正式开发的一周内,基本上每天都能遇到1-2个不好搞定的难点,为了解决这些问题,基本上1-2个小时在学习和尝试的过程中,再加上一些需求和接口文档的设计问题,也占用了一些开发时间。很多已经了解过甚至「炒过」Demo的功能,自己写起来还是会遇到很多问题,比如「异步查询」,搞了半个多小时才算最后确定下来。

MySQL基础太弱

之前也是学过一点「MySQL」语句,基本的「select」「update」「insert」「delete」都是又了解的,觉得基本功能还是掌握的,在工作中也是基本够用,所以就一直没有深入学习过一些「高级」语法和更复杂的「SQL」语句。在本周开发过程中遇到的难点,一半以上都是「MySQL」,联个四五张表都是基础,最难我的觉得就是「insert select」,将查询结果加上参数值当做一条写入数据,在结合「foreach」批量查询,还有一个比较简单的,就是「mybatis」里面的「if」「where」「choose」「when then otherwise」以及「case when then else end」,感觉收获满满,以后还得多练。

Java基础

这是我昨天才想到的,也算是一个安慰,突然意识到本周的开发过程中没有遇到「Java基础」的坑。中间就是熟悉了一下「BeanUtils」的API,封装了一下「AbstractBean」的一些公共方法。偶尔遇到了一些「Groovy」「Java」的兼容性问题也都很快解决了。其中比如「线程锁」的设计,「异步查询」的实现都比较顺利。这里推荐一篇自学「Java基础」的文章:​​如何学习Java基础​​。

  • 很重要的经验:练习、练习、在练习。

我的开发日记(七)_mysql