华山论剑

一心一意做技术!

BlogJava 首页 新随笔 联系 聚合 管理
  31 Posts :: 0 Stories :: 447 Comments :: 0 Trackbacks

  在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 

posted on 2006-06-28 10:37 大峡 阅读(2227) 评论(3)  编辑  收藏

Feedback

# re: EasyJWeb Tools中代码自动生成引擎详解 2006-06-28 12:40 HardJWeb
你们好无聊,解散算了  回复  更多评论
  

# re: EasyJWeb Tools中代码自动生成引擎详解 2006-06-28 14:17 ianwong
 当然,在软件的领域里,专家们都是知识分子,相对显得比较文雅。因此不会像足球界那样动不动就端出“足球”与“超女”比较谁更纯洁的讨论。不过,国产开源中也会有部份伪专家冒出如“毛没长齐就敢做开源”,还会编造一些莫须有的“代码乱”、“有bug”或者是“还有那么多问题就敢拿出来开源”的滑稽、可笑理论。这种容易露破绽的专家虽然对社会也能造成一些危害,但很容易就会被揭穿。他们怎么练都只能是伪专家,练到最高的层次就是首席忽悠大师裘千丈那个级别,当然很容易被黄蓉一样的智者揭穿。当然还有在某个博客网站上,那些只会在我文章屁股后面吐口水、拉屎、拉尿的,满嘴又臭又脏小丑混混角色,更加不值一提,只是苦了网站管理员还要花很多精力来打扫。
--------------------

  前段时间一直在潜水,看热闹,现在大家都比较安静了,我来说一句:  
  easyjf做得很不错,也看到了进步,不过建议大峡同志别在跟这些小人计较了。看了你君子剑里面上面的一段,好像是说的blogjava那几个总是跟你们作对的人吧。
  从我在springside的用户QQ群里面看到的,可以肯定你的Spring那篇什么轮子理论的文章是引起前一时间的争吵的原因,难道你不知道springside的人跟blogjava之间的关系吗?专心做技术吧,我希望看到写程序的大峡,而不是写文章的大峡,不过你写的文章我肯定都会看。   回复  更多评论
  

# re: EasyJWeb Tools中代码自动生成引擎详解 2006-07-05 21:58 猎手
大侠,如果你们对compass熟悉的话,就给大家普及一下嘛,也算推动国内搜索的应用服务,如果可以的话,把那个英文文挡给翻译成中文怎么样啊。谢谢啦  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: