在EasyJWeb-0.6.0推出来以后,很多网友对其中的代码生成部分非常感兴趣,并来信问了一些如何使用easyjwebtools、如何支持多表生成、生成页面的定制、业务逻辑的定制等很多问题。下面以我自己的理解,简单介绍一下EasyJWeb Tools中的代码生成的应用方法及展望。
一、快速体验及上手
EasyJWeb考虑到国内存在很多Java初学者的情况,因此代码书写及发布方式力求简单明了,让新手也能快速上手。在发布的0.6.0版本中,不但实现了ant及maven来管理项目发布,还初步实现了代码生成引擎中的部分功能。你可以在下载了EasyJWeb项目的源代码后,花上不到两分钟即实现一个添删改查及分页的Java Web代码生成、编译及打包发布等过程。整个过程只需要下载EasyJWeb源码->建表->改数据源配置文件->执行生成命令easyjwebtools->然后运行即可。详细步骤如下:
1、 下载EasyJWeb最新版本
http://www.easyjf.com/easyjweb/download.htm
2、建立数据库及数据表
使用My SQL或MS SQL数据库,建一个库,然后建一个表,比如message(留言板)。由于EasyJWeb Tools业务引擎中使用的是ORM系统访问数据库,因此要求每个表都设置一个名为cid的、类型为varchar(16)的主键字段,然后就是其它的一些需要使用的字段。如下面我写的示例表:
CREATE TABLE `message` (
`cid` varchar(16) NOT NULL,
`title` varchar(100) NOT NULL,
`inputUser` varchar(16) default NULL
`inputTime` datetime default NULL,
PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
生成的添删改查及分页代码缺省情况下使用EasyJF团队开发的超轻量级ORM框架EasyDBO访问数据库。当然你可以根据自己的情况选择其它的ORM系统,如hibernate、iBatis等。
3、修改数据库访问配置文件
EasyJWeb Tools中代码生成引擎当前是根据数据表的字段名来生成的代码。因此,要能正确运行该程序,必须保证数据库的连接配置参数设置正确。我们只需要修改下载源码中的src\main\easyjf-dbo.xml文件即可。关于EasyDBO的配置说明,请看本人的《EasyDBO配置文件easyjf-dbo.xml详细说明》这篇文章,地址:http://www.easyjf.com/html/20060427/31970563-6771387.htm
4、运行easyjwebtools命令
通过开始菜单的运行栏中输入cmd。然后使用cd命令切换到EasyJWeb源码解压目录的bin目录。
然后输入easyjwebtools <表名>
在提示按任意键后,找到键盘上的任意键(呵呵)按一下。直到看到Build Successful的栏式。完成后就到EasyJWeb解压目录中生成release目录,里面有一个打包好的easyjf-jweb-0.6.war文件,把该文件拷到Tomcat 的webapps目录下。然后启动Tomcat即可。
二、多表生成
在实际应用中,我们只有一张表的情况下少之又少。而且不可能每生成一张表的添删改查就打一个War包,这不是很搞笑吗?
EasyJWeb Tools中的单表生成只是为了提供一个快速的应用体验。因此,easyjwebtools这个批处理命令是把编译、生成、再编译打包发布等过程全部集中一起的。大家可以用编辑器打开bin目录中的easyjwebtools.bar这个文件,注释(或者删除)掉其中的call build.bat compile,call build.bat war两行。这样在执行easyjwebtools这个批处理的时候就只完成代码生成功能而不会执行编译及打包发布的过程了。
多表生成只需要先编译一下EasyJWeb项目源代码。然后再重复执行easyjwebtools生成每一个表的添删改查,最后再执行一个重新编译及打包发布命令。
在命令行操作的整个过程如下:
编译:build compile
然后重复:easyjwebtools <表1>
easyjwebtools <表2>
…
easyjwebtoosl <表n>
最后执行打包发布:build war
三、代码生成引擎的展望
在实际的项目中,我们的应用是比较复杂的,而且在代码生成的时候还会有很多具体的需求,比如:
1、我们会涉及到成百上千的数据表。
2、 而且这些数据表还有着各种各样的联系,如主从关系、外键约束、关联等,很多表还要支持延迟加载(lazy load)等功能。
3、 操作不会只是简单的添删改查,还会有更多的商业逻辑。
4、 在生成基于hibernate等ORM系统的时候,还要生成相关的配置文件。
5、 还需要更多的选择及互动操作。
另外,代码生成引擎还要考虑很多问题,如页面的可维护性、生成后的代码当需求改变的时候重新生成、生成代码的可扩展性、可维护性等等。生成的方式、代码风格、页面样式等都要求提供给用户自由选择与定制的支持。
提供一个可视化的用户交互界面,而非命令行,使用UML建模,然后根据UML模型有选择的生成表结构、生成相关代码、测试代码、生成各种页面文件,并且打包发布。理想的情况下,代码生成引擎完成一个项目的70%以上重复烦硕的代码书写工作。程序员要做的,就是在生成后的代码或页面上做一些个性化的功能需求或设置。
提供简易、快速的J2EE应用程序开发解决方案,这就是EasyJWeb Tools将来的奋斗目标。EasyJWeb是开源的项目,任何会说汉语的人都可以参与进来,在此诚邀有兴趣的朋友一起来为EasyJWeb Tools的目标而奋斗。
附:
关于 最新《世界杯与国产开源系列》文章的发布,请看本人Blog在非技术区中的友情公告,欢迎感兴趣的朋友前去指教,地址:http://www.blogjava.net/daxia/archive/2006/06/28/55435.html