下载地址参见附件,另附struts运行最小系统。
CodeMaster 是一款代码智能生成的小工具,使用纯java开发,小巧精简但在很多情况下非常的实用,理论上能够生成任意架构的java源码、配置文件、建表语句等等。
以下直接介绍该小工具的用途和试用方法:
在开发java代码的时候,特别是开发J2EE中的web项目时,程序员经常会碰到这样一些问题:代码敲写、复制粘贴十分的繁琐,而往往很多代码功能又有所重复或类似只是命名不同而已。比如持久层的开发,在使用hibernate时针对一张表我们其实是要做很多工作的:需要配置表-类的映射文件,需要创建编写持久层类还需要编写对持久层类操作的方法等等。但是这些繁琐步骤却在每次要新建一张表的时候又要重复进行一次,更何况持久层只是项目中的一个层面,在业务层和控制层往往也有很多类似的情况发生。
CodeMaster 就是为简化这种情况而设计的一种工具。其原理就是将这些重复的操作抽象出来并存入文件,因此这种繁琐的操作只用进行一次,之后便可通过替换的方法进行各类代码的生成,该文件其实也就是模板文件。下面介绍工具的使用:
首先先在工具的同级目录下创建一Excel文件(扩展名为xls),并命名为tables.xls,Excel中的格式请参考示例。在同级目录下创建template文件夹,在该文件夹下创建模板文件,文件名和格式参考示例(模板扩展名必需为ftl)。对模板做如下注解:
所暴露的变量
全局变量
${package} 包路径:模板文件名,以'_'分隔 ${classname} 类名:Excel中获取 ${chname} 类中文名:Excel中获取 ${date} 当前时间
对象属性
fieldList 遍历方法:<#list fieldList as fields>...</#list>
所带属性
${fields.DISPLAYNAME} 中文说明 ${fields.FIELDNAME} 字段名 ${fields.DATATYPE} 数据类型 ${fields.ISPK} 是否主键 ${fields.ISBIZPK} 是否业务主键 ${fields.ISNULL} 不能为空 ${fields.DEFAULTVAL} 缺省值 ${fields.BIZPKPAG} 外键(表/id)包/类名(用于建表语句或者hibernate) ${fields.BIZPKTYPE} 对应关系(用于hibernate) ${fields.REMARK} 备注
----附录----
freemarker 常用函数说明
${date?string('yyyy-MM-dd')} 时间格式化 ${classname?cap_first} 首字母转大写 ${classname?lower_case} 转小写 ${classname?upper_case} 转大写 ${classname?trim} 去除前后空格 ${fieldList?size} 获取list中元素的数目 <#list fieldList as fields><#if fields_has_next>...</#if></#list> 判断是否是列表最后一条记录
大家从这个模板和注解基本可以看出模板实际上就是freemarker框架(freemarker确实比较强大而且实用,不仅用作一般web页面的模板,任何文件的生成都可以此来作为模板)。示例模板中所给出的是一个struts架构的web例子,模板文件夹中包含了:建表语句模板、持久层类模板、业务层类模板、及控制层的Action类和ActionForm类模板和对应struts配置文件xml模板。有兴趣的朋友可以大致看一下模板的编写及格式。
下面运行主程序CodeMaster.exe(程序是基于纯java编写,请确保装有6.0以上的jdk或jre,如无法运行请尝试先装压缩包中的jxpiinstall.exe):
选择路径之后(默认为当前目录)点击'生成'在所选择的output文件夹中讲生成对应的源程序文件。
有兴趣的朋友可以试着编写一些其他架构的模板,如:ssh,s2sh等。
该软件版权归COMMA开发团队所有,程序本身免费,使用者不得以任何形使用于任何商业用途。转载本文请申明出处。