18年夏季公司有和其它一家软件公司谈合作开发,对方发了打包好的源码和数据库(商务未谈好之前没有开放SVN或GIT),之前商务一直搁置,我也没去研究(基础没打牢也看不懂),趁过年期间,花了几晚(每晚两小时左右)翻看了下代码,总结出一些规律,记录下:

1、使用LayUI + SprintMVC + Mybatis + Oracle

2、LayUI的JS部份上手很快,就几个语法,弹出窗、确认窗就一句话,ajax是jquery的$.ajax,不知道为什么不封装一下,每次用原始的提交,一堆参数。table也简单,一个空的tbody,设好id,然后JS里用table.render把数据赋入就行。

验证也有现成的,把form的id传入即可,日期初始化也是一句话

3、LayUI的html部份看着有些复杂,不过如果已有现成的话,都不用翻官方文档,照着复制粘贴就可以了

4、jsp和js/css是成对出现的,以前项目习惯把JS、CSS单独存放,该项目是单个配对的,有一个JSP就有一个JS,也是可以,方便修改。

不过每个页面都是复制了开头载入的CSS和末尾载入的JS,也不知道为什么不封装一下,载入一个公共的应该就行(每个页面再多一个自已用的JS或CSS)

5、控制器也不是Restful风格,我也更习惯这种传统的,和.net的MVC基本没区别,就是传递一下参数,去后台取值而已

6、有个公共的拦截器用于登录session的验证,但日志是每个控制器方法里去写的,好处是便于记录日志,但应该也可以统一处理掉(目前公司.net MVC也是控制器里具体去写,便于获取参数和数据)

7、ajax提交到控制器,好像没怎么验证?不是jsp提交的,是ajax提交的,好像是有验证session,到时项目在本地跑起来再看下

8、控制器去service获取数据,service再调Mapper(是个接口),Mapper再去同目录下相同文件名的xml里取数据,应该是mybatis套路没错

9、不知怎么分页的,控制器是有个RowBounds类,会传递参数,但我没看到分页参数传到XML后台啊。两种可能,一种是框架封装好了,会自动取分页(要跟踪下Oracle),另一种是伪分页,后台取出所有数据,在控制器里取某页。也是待验证(或查找资料)

10、增删改查均为XML,不知有没有代码生成器,不然每张表都要复制修改一套,比较繁琐,还是.net的EF处理这种普通增删改查简单(好像Java对应的是Hibernate?)

11、VO类(实体类)不知是否有自动生成的,我看注释是人工写上去的,另外日期等格式也需要加属性处理

12、控制器里每个取数据的方法都有try catch,感觉是可以统一框架处理,没必要每个去写。里面几句语法感觉可以再精简一下,代码行数可以少些,我是喜欢代码越少越好。

13、算是前后端分离的项目了?因为数据都是返回json,和ajax进行交互,前端也几乎没有jsp语法,都是普通的layUI

14、数据库用Oracle,但没看到任何Oracle特性,也没用存储过程,可能是业务逻辑较简单。这个库可改成SQLServer或MySQL都行,不过Mapper的XML里有一些NVL等Oracle特有写法,要迁移其它库里要稍改下,但改动不大。

存储过程有存储过程的好处,不方便就是迁移库语法不通,方便的是容易写很复杂的业务逻辑。SQLServer的存储过程好写(可能是习惯问题),Oracle的写不来,临时表等不好用,又要靠游标,但也有见过一些公司有复杂Oracle的存储过程的

15、没看到单元测试等相关代码,小项目也不需要就是了

16、整体看下来还是比较有信心的,属于比较简单、比较传统的,非常适于入门,这套要能吃透,起码相当于两年经验的Java工程师。