从上面大家可以看到,我们这个代码生成器和Hibernate的POJO对象生成工具类似,也是基于数据库的模型来生成代码的,不同的是,我们生成的代码范围更广,不仅包括了POJO对象暨相应的hbm.xml文件,另外还包括相应的DAO(Server层)、相应的Action、Form类、相关的JSP文件(list页面、edit页面、Excel导出页面等等)、资源文件及相关的Struts和Spring的配置子文件(Struts和Spring均支撑将配置拆分成多个配置,我们利用这种特性来减低模块之间的耦合性。)
至于数据库模型的获得,可以利用JDBC的MetaData(元数据模型)的功能来获得,我们目前维护了表的完整的主键、外键关系(父子表)
第三步:配置模板。有了可视化的数据库表映射模型,也获得了数据库表及其主外键关系的详细信息,接下来当然是根据这些信息来生成代码了。这里我们用了强大的Velocity模板技术,这样不仅可以灵活的处理复杂的表映射对象之间的关系,也能够灵活的进行变更升级。而且我们能够通过所获得的数据库模型,在页面上自动实现基于Javascript的数据验证“非空验证、字符长度验证、数字验证,日期验证”。
呵呵,通过以上3个步骤的工作,我们的自动代码生成器就大功告成了!目前我们生成的代码可以直接编译通过,通过简单的系统配置后,可以直接在服务器上跑!由于模板种类多,而且模板中自动实现的代码功能已经非常完善了,所以一些特殊的业务需求只需要在自动生成的代码基础上做简单修改就可以了!
代码生成器投入使用后,对我们项目开发的资源投入的改善是非常明细的,目前基于基础平台和代码生成器的配合,我们已经做了6、7个系统了,平均每个系统的开发时间至少要比以前节约40%,有的项目甚至达到了80%以上(我们最高的一天,处理了40多个表的增、删、该、查的功能,及中文本地化)。而且,另外很重要的一点,生成的代码无形中统一了程序员的设计风格,我们通过这套开发机制,能够最大限度的保证我们开发的系统质量,保证模块可以在不同系统之间的自由迁移,最大限度的实现复用!在项目开发中节省出来的大量时间,也让我们可以去研究更多的开源中间件和系统,来增强我们的基础平台,从而形成一个良性的循环!
我们做了多套模板,能够针对单表操作,及父子表操作来自由组合搭配。以下就是我们系统的一些功能截图,除了中文化之外,基本上没有修改:
单表操作:
父子表关联操作: