EasyJWeb Tools中代码自动生成引擎详解
在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的目标而奋斗。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=844893
EasyJWeb Tools中代码自动生成引擎详解相关推荐
- Python中random模块生成随机数详解
Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...
- WORD中的自动编号实例详解(多图)
跟"项目符号"一样,自动编号功能也是针对"列表"内容的.并且自动编号中更改列表级别.设置字体等方法与项目符号的相同,参见:WORD中的项目符号实例详解 与&qu ...
- python中random模块中包含了随机数相关的功能函数_Python中random模块生成随机数详解...
print random.randint(12, 20) #生成的随机数n: 12 <= n <= 20 print random.randint(20, 20) #结果永远是20 #pr ...
- python中产生随机数模块_Python中random模块生成随机数详解
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- python中sn的意思_Python中random模块生成随机数详解
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- python的sort方法是哪种_python中的sort方法使用详解
Python中的sort()方法用于数组排序,本文以实例形式对此加以详细说明: 一.基本形式列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可 ...
- 自动产生fsm代码的工具_代码自动生成工具
构建支持多种数据库类型的代码自动生成工具 背景: 一般的业务代码中写来写去,无外乎是先建好model,然后针对这个model做些CRUD的操作.(主要针对单表的业务操作)针对于数据库dao.mappe ...
- Driller、Exploit自动生成引擎 Rex
来自 UCSB 的团队 Shellphish,为参加 DARPA 举办的 CGC 竞赛,设计并实现了 CRS(Cyber Reasoning System)Mechaphish.该系统包含自动化漏洞挖 ...
- 英飞凌代码生成_利用MATLAB-RTW的嵌入式代码自动生成与整合
2018 收稿日期 :2018 - 01 - 02 收修改稿日期 :2018 - 02 - 01 基金项目 : 国家自然科学基金项目 (51405270) 资助 . 作者简介 : 陈 攀 , 男 ,1 ...
最新文章
- System.Net 类的最佳习惯
- OpenCV | OpenCV 图片换底色
- mysql 最小配置_如何配置全世界最小的 MySQL 服务器
- Web2.0时代,RSS你会用了吗?(技术实现总结)(转载)
- 初识Windows程序
- C#省市二级联动(王者荣耀挑选英雄为例)
- 【POJ - 2392】Space Elevator (dp,优秀的背包问题)
- WinFormDataGridView单元格提示和相关应用 之配餐系统的开发
- hibernate could not resolve property
- JDBC操作数据库的问题总结
- 图书管理系统的设计与实现
- c语言函数名称大全,C语言函数大全
- UMTS与WCDMA, HSPA
- C. Mortal Kombat Tower(DP 走台阶问题)
- 判断系统(服务器)中是否存在后门程序的2个工具
- org.dom4j.DocumentException: 1 字节的 UTF-8 序列的字节 1 无效。
- Given no hashes to check 131 links for project 'pip': discarding no candidates
- 用vmware安装雨林木风虚拟机系统的坑
- 微信公众号开通步骤详解
- 深入小程序云开发之云函数 第三部分 云函数经验谈