偶之前参与做的一个自动化代码生成工具,是基于Eclipse的插件,可以生成从展示层到数据层的所有相关代码,生成的代码可以不需要修改直接运行。
整个原理参考了MDA的思想,可实现从PIM到PSM的转换。目标代码是JSF+Spring+Hiberate的,包括所有的页面 代码和配置文件等,选择模板引擎的时候也比较过velocity,最终由于它不支持代码反复生成给否决了。最后采用了JET+JMerge的方式,Jmerge可以通过代码中特定注释的方式来识别是否需要覆盖目标代码,生成出来的代码可以由开发人员反复发修改反复生成,而不会丢失内容。 有点逆向工程的味道,但也不完全是。
建模的时候元数据模型采用Eclipse EMF进行建模,抽象了一套pim. SWT+JFace做工具的界面,基于Eclipse平台做了一个Eclipse的代码自动生成插件,可以直接产生完整的Eclipse工程。
可扩展性方面,插件还对外提供了扩展的Extention point,可以供第三方基于我们的插件开发新的插件,以适合不同技术的项目(如struts+ibatis)等。
呵呵,其实整个工具的开发工作量不大,很简单,总代码行也就一万六千行左右,主要是设计EMF元数据模型的时候考虑了很久,但带来的效率提升还是很不错的,开发中项目50%以上的代码都可以自动生成。
下面是贴图
新建自定义的工程
选择数据来源
测试数据连接
选择数据模型及数据字典,可以选择多个
可以选择修改模型字段的属性
设置视图模型以及显示相关属性,支持定义正则表达式校验 js校验 定义页面元素为Text Select RadioBox等类型,若为Select RadioBox,可以选择数据字典
数据字典选择
这里设置页面查询区域的数据,也就是页面上面的查询输入区域
设置模型文件的编码等信息
若有需要,可以设置一些选项信息,包括代码模板目录,代码合并规则,以及目标代码类别
完成后产生的Java工程,包括所有的配置文件 Java代码 JSP页面 数据模型文件等等
数据模型编辑器,可以反复修改数据模型,修改后可以更新全部代码,也可以选择更新部分代码
由于使用了Jmerge,之前产生的代码就算开发人员修改了很多,再次产生也不会覆盖,也不需要开发人员拿几次生成代码手工合并,呵呵
最终产生的代码就是一个完整的功能块,可以直接发布到tomcat上运行,界面和楼主的类似,包括列表 增 删 改 查询等几个页面,页面字段的校验,字段的显示样式(selectbox checkbox等等)也都具备了,基本上很少修改,对UI风格不满意可以引入不同风格的代码模板就Ok了