在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://m.tkk7.com/daxia/archive/2006/06/28/55435.html?