今天突然想玩玩这个。。搞搞代码生成器,今天把原理发出来。。写好Demo陆续更新
整个架设思路分的4个部分:
A:底层物理数据库层,主要是存储数据用的。
B:数据库访问层,主要是为了写一套代码可以跑在多种数据库上。
C:一些辅助工具、基础组件,是为了加强自动产生代码的功能、简化代码复杂性,进行合理的分工协作用的。
D:自动生成的代码部分,用PowerDesigner设计简洁明了、易于沟通理解,代码分自动生成及人工部分,为了重复生成方便。
详细功能部分只要是分12个部分来讲解,分别如下:
01:我业务里需要的表,是自己的业务里建立的,不大可能有个万能的表,能把所有的业务都能覆盖了。
02:这是系统里通用的一些表,例如序号生成器表、记录当前的序号使用情况,有点儿像Oracle的序列。
03:这个是一个数据库访问层的基础类,其他几个类都继承了这个类,在这个类的基础上进行个性化扩展,重复的代码会少一些。
04:为了实现不同数据库的个性化功能,每个具体数据库采用了个性化的实现,例如获取当前时间,各种数据库都有些不一样。
05:常用的数据库操作,都封装在这个类里了,其实我们天天在做的就是添加、删除、修改、查询而已,没啥了不起的。
06:这个是我的基类,里面有很多功能都封装好了,别的类继承一下,就会有很多功能自动就有了,不用所有的代码都要生成,共性的代码,基础类里写就可以了。
07:SQL语句人工写太烦恼了,就算用生成器写也不太好,数据库表名字段名经常若有变动,程序改来改去很烦恼,而且测试也不太好测试,用生成器的好处就是在在编译阶段发现错误,将错误扼杀在编译阶段。
08:是我的序号生成器、排序码生成器,数据都需要排序功能的,先输入的数据排在前面?还是后输入的数据排在前面?还是我人工需要干预数据的排序顺序?有生成器生成排序码、然后接着想怎么处理都方便了,可以满足个性化的数据排序需要了。
09:PowerDesigner是非常优秀的数据表结构设计工具,可以设计多种数据库的表结构,也算是业界的一个标准一样了,我们的代码生成器直接能读懂你的设计文档,也挺有意思的,比读取数据里的表感觉档次高一些,毕竟我们是专业的IT软件人员嘛。
10:这是自己写的代码生成器,很简单,很原始,自己想怎么修改就怎么修改,生成的代码,还有注释呢,你自己想扩展也可以的,总共也就1000行代码而已,读几次就全明白了。
11:这里是代码生成器目前可以生成的代码,以后精力充沛了,可以把页面的代码页生成生成,服务层的代码也可以生成,就看有没有时间去折腾了,或者页面层、服务层的代码通过复制粘贴标准例子程序来搞定,也很方便的,未必代码生成器就强多少。
12:个性化的业务逻辑还是需要自己写sql语句实现,这时候代码就不要放在一起,我设计变了,整个代码可以重新生成,但是别覆盖我人工写的代码部分,这部分被覆盖了,损失还是很惨重的了,不能因为设计变了,重新生成了代码,自己辛苦写的程序都丢了吧。