本發(fā)明主要針對計算機應(yīng)用技術(shù)領(lǐng)域,具體目的是為在編程工作中提高個人的工作效率。
背景技術(shù):
在現(xiàn)今的IT領(lǐng)域,開發(fā)人員的工作壓力越來越大,工作量也越來越多,很多非業(yè)務(wù)的基礎(chǔ)功能也需要消耗時間去編寫,這樣就導(dǎo)致了時間和精力的低效使用。現(xiàn)有的代碼自動生成方法多數(shù)采用文本文檔模板替換特定字符的形式拿到文件流從而生成代碼,這樣必然導(dǎo)致模板編輯困難(變量的定義和替換賦值,固定文檔結(jié)構(gòu)格式的調(diào)整等)和代碼生成效率的降低。
技術(shù)實現(xiàn)要素:
針對上述現(xiàn)狀,本發(fā)明提供了一種智能代碼生成引擎及方法,可集成于項目中(可視化操作),也可單獨使用,大大減少了軟件開發(fā)人員的基礎(chǔ)編碼工作,進而提升軟件開發(fā)人員的工作效率。
本發(fā)明一種智能代碼生成引擎,其特殊之處在于,包括數(shù)據(jù)庫表查詢展示配置模塊、數(shù)據(jù)表詳情查詢模塊和Beetl模板引擎模塊;
所述數(shù)據(jù)庫表查詢展示配置模塊:用于查詢數(shù)據(jù)庫內(nèi)所有表名,并提供可視化界面數(shù)據(jù),給予用戶進行后續(xù)操作使用;
所述數(shù)據(jù)表詳情查詢模塊:用于根據(jù)所述表名在數(shù)據(jù)庫中查詢表列相關(guān)詳細(xì)內(nèi)容提供給模板引擎渲染數(shù)據(jù);
所述Beetl模板引擎模塊:用于根據(jù)所述表名和表中列相關(guān)詳細(xì)內(nèi)容,加載和解析預(yù)先定制的Beetl模板,將所述表名和表中列相關(guān)詳細(xì)內(nèi)容組裝參數(shù)集合渲染模板數(shù)據(jù)并生成代碼文件。
進一步地,所述預(yù)先定制的Beetl模板為本人現(xiàn)在使用的SSI框架下的代碼模板,包括控制層模板、數(shù)據(jù)庫映射關(guān)系配置層模板、實體類模板、服務(wù)層模板、前端頁面層模板。采用此架構(gòu)是為了更好的適應(yīng)目前團隊項目的開發(fā)使用(穩(wěn)定性、靈活性等),也可以采用自己的框架結(jié)構(gòu),可靈活使用。
更進一步地,所述前端頁面層模板包括添加功能模板、列表功能模板、修改功能模板和查看功能模板。此處前端的四種模板實現(xiàn)了基礎(chǔ)的增、刪、改、查功能,也可以根據(jù)自己所在項目的具體情況添加配置更多常用功能模塊到模板文件。
更進一步地,所述服務(wù)層模板包括接口類模板和接口實現(xiàn)類模板,此處采用接口與業(yè)務(wù)實現(xiàn)分離的模式,目的是讓代碼更簡潔易懂。
更進一步地,所述Beetl模板引擎模塊(3)基于Beetl引擎實現(xiàn),使用WebAppResourceLoader資源模板加載器,可以直接獲取到渲染數(shù)據(jù)后的文件流,針對此文件流我們可以保存為對應(yīng)的文件。
一種基于上述智能代碼生成引擎系統(tǒng)的智能代碼生成方法,其特殊之處在于,包括如下步驟:
1)在數(shù)據(jù)配置文件中修改智能代碼生成引擎的配置信息;
2)在數(shù)據(jù)庫表查詢展示配置模塊中選擇需要生成代碼的表名;
3)數(shù)據(jù)表詳情查詢模塊根據(jù)所述表名查詢表內(nèi)容,并加載出表中所有的字段信息,勾選需要功能,形成功能項;
4)Beetl模板引擎模塊根據(jù)表名和表內(nèi)容中的功能項選取預(yù)先定制的Beetl模板,將所述表內(nèi)容渲染數(shù)據(jù)并生成代碼文件于配置文件中的指定路徑。
優(yōu)選地,所述步驟1)中的配置信息包括數(shù)據(jù)庫連接地址;后臺代碼存放目錄;后臺代碼存放包名;前端頁面存放目錄;作者姓名。此處采用配置文件可以靈活改變,既適應(yīng)了集成此智能代碼生成引擎于項目中(配置文件的修改無需重新啟動項目),也適應(yīng)了單獨使用此智能代碼生成引擎。
優(yōu)選地,所述步驟3)中的表內(nèi)容包括表的列名、列說明、列類型、精度、主鍵??梢暬慕缑媸褂脩舻牟僮鞲庇^,易用性得到很大的改善。
本發(fā)明針對現(xiàn)有代碼自動生成方法效率不高的缺陷,對確定了系統(tǒng)架構(gòu)的系統(tǒng),通過數(shù)據(jù)庫中相應(yīng)表的查詢,包括字段和注釋,從而自動生成含有最基礎(chǔ)的增(templ_insert.html)、刪(此功能點無模板)、改(templ_update.html)、查(列表:templ_select.html,詳情:templ_view.html)功能的對應(yīng)的模塊代碼,現(xiàn)在也將此技術(shù)做成可視化界面,便于開發(fā)人員操作,從而提高開發(fā)人員的工作效率,減少基礎(chǔ)代碼編寫工作量,讓開發(fā)人員有更多的精力專注于行業(yè)中的業(yè)務(wù)處理。
附圖說明
圖1為本發(fā)明智能代碼生成引擎系統(tǒng)的結(jié)構(gòu)示意圖。
圖2為本發(fā)明智能代碼生成引擎系統(tǒng)的后臺代碼目錄結(jié)構(gòu)示意圖。
圖3為本發(fā)明智能代碼生成引擎系統(tǒng)的前端代碼目錄結(jié)構(gòu)示意圖。
圖4為本發(fā)明智能代碼生成方法的基本流程圖。
圖5為本發(fā)明智能代碼生成方法的配置數(shù)據(jù)源信息的示意圖。
圖6為本發(fā)明智能代碼生成方法的生成代碼的表名的示意圖。
圖7為本發(fā)明智能代碼生成方法的選取列字段在列表頁的查詢匹配方式的示意圖。
圖8為本發(fā)明智能代碼生成方法的選取列字段在新增、修改、查看頁面的顯示表單類型的示意圖。
圖9為本發(fā)明智能代碼生成引擎系統(tǒng)的整個可視化視圖界面的示意圖。
圖中:數(shù)據(jù)庫表查詢展示配置模塊1,數(shù)據(jù)表詳情查詢模塊2,Beetl模板引擎模塊3,數(shù)據(jù)庫4。
具體實施方式
以下結(jié)合附圖和具體實施例對本發(fā)明作進一步的詳細(xì)描述。
本技術(shù)方案中模板配置的前提是確定整個系統(tǒng)架構(gòu)。如圖1所示,本發(fā)明一種智能代碼生成引擎系統(tǒng),包括數(shù)據(jù)庫表查詢展示配置模塊1、數(shù)據(jù)表詳情查詢模塊2和Beetl模板引擎模塊3。
數(shù)據(jù)庫表查詢展示配置模塊1:用于查詢數(shù)據(jù)庫4內(nèi)所有表名,并提供可視化界面數(shù)據(jù),給予用戶進行后續(xù)操作使用。
數(shù)據(jù)表詳情查詢模塊2:用于根據(jù)表名在數(shù)據(jù)庫4中查詢表內(nèi)容提供給模板引擎渲染數(shù)據(jù)。表內(nèi)容包括表的列名、列說明、列類型、精度、主鍵等。
Beetl模板引擎模塊3:用于根據(jù)表名和表內(nèi)容,加載和解析預(yù)先定制的Beetl模板,用組裝好的數(shù)據(jù)集合(表名和表內(nèi)容)對模板進行渲染數(shù)據(jù)并生成代碼文件。Beetl模板引擎模塊3基于Beetl-Java模板引擎實現(xiàn)。Beet模板引擎是一種類似JS語法和使用習(xí)慣以.btl結(jié)尾的文件模板,由于Beetl具有的高性能、高可靠性、高易用性等優(yōu)點,因此本發(fā)明采用Beetl-Java模板引擎。
Beetl模板是基于已有的代碼,根據(jù)自己的代碼風(fēng)格以及框架的結(jié)構(gòu)調(diào)整的模板信息,Beetl模板提供有四種資源模板加載器,并且支持自定義資源模板加載器,此處選用的是WebAppResourceLoader資源模板加載器,Java代碼調(diào)用函數(shù)簡單,可以在模板文件中定義變量,且變量的賦值僅需放入綁定數(shù)據(jù)的Map集合中,與JSTL表達式使用規(guī)則類似,此處減少了重新學(xué)習(xí)新語法規(guī)則的成本,現(xiàn)有的代碼生成工具幾乎沒有使用模板引擎,導(dǎo)致到生成代碼的時候?qū)ο到y(tǒng)資源消耗較多,且不能靈活的變更模板,因此代碼生成的效率和通用性大打折扣,此處選用Beetl模板作為代碼的模板文件就是為了解決這一問題,無論你的項目使用什么技術(shù)架構(gòu),只要有一個完整的樣例,就能輕易的編寫出模板文件,底層查詢的數(shù)據(jù)已經(jīng)封裝出幾乎所有的表相關(guān)信息的實體類,在模板文件中變量賦值就變的輕而易舉,從而大大提升開發(fā)人員的工作效率。
預(yù)先定制的Beetl模板為SSI框架下的代碼模板,包括控制層模板(templ_controller.btl)、數(shù)據(jù)庫映射關(guān)系配置層模板(templ_ibatis.btl)、實體類模板(templ_entity.btl)、服務(wù)層模板(templ_service.btl/templ_serviceImpl.btl)、前端頁面層模板(templ_select.btl/templ_insert.btl/templ_update.btl/templ_view.btl)。模板文件中的包名、類名、頁面路徑、字段說明等等均需要使用變量,以便模板引擎加載模板渲染數(shù)據(jù)。后臺代碼目錄結(jié)構(gòu)如圖2所示。
前端頁面層模板包括添加功能模板(templ_insert.btl)、列表功能模板(templ_select.btl)、修改功能模板(templ_update.btl)和查看功能模板(templ_view.btl)。前端代碼目錄結(jié)構(gòu)如圖3所示
服務(wù)層模板包括接口類模板(templ_service.btl)和接口實現(xiàn)類模板(templ_serviceImpl.btl)。
如圖4所示,一種基于上述智能代碼生成引擎系統(tǒng)的智能代碼生成方法,包括如下步驟:
1)配置數(shù)據(jù)源信息,包括連接的數(shù)據(jù)庫驅(qū)動、數(shù)據(jù)庫連接URL、用戶名、密碼、后臺代碼存放目錄、后臺代碼存放包名、前端頁面存放目錄以及作者姓名,如附圖5所示。
2)在數(shù)據(jù)庫表查詢展示配置模塊1中選擇需要生成代碼的表名供使用者下拉選取找到需要生成代碼的數(shù)據(jù)表,如圖6所示。
3)數(shù)據(jù)表詳情查詢模塊2根據(jù)選取需要生成代碼的數(shù)據(jù)庫表的表名查詢表內(nèi)容,并加載出表中所有的字段信息,根據(jù)可視化界面提供的信息在后需要配置如下幾項:
a)勾選列字段是否在列表頁中顯示。
b)勾選列字段是否為列表頁的查詢條件。
c)選取列字段在列表頁的查詢匹配方式(如“=”、“?。健?、“>=”、“>”、“<”、“<=”、“l(fā)ike”、“between”等,如圖7所示)。
d)選取列字段在新增、修改、查看頁面的顯示表單類型(單行文本、多行文本、富文本、下拉選項、單選、多選等,如圖8所示)。
e)選取列字段關(guān)聯(lián)字典名稱(如民族、性別等字典表)。
4)Beetl模板引擎模塊3根據(jù)表名和表內(nèi)容中的功能項選取預(yù)先定制的Beetl模板,將表內(nèi)容組裝數(shù)據(jù)集合后對相應(yīng)的模板文件渲染數(shù)據(jù)并生成代碼文件返回文件流,再根據(jù)配置文件中指定的文件路徑保存文件。
整個可視化視圖界面如圖9所示。
以上結(jié)合最佳實施例對本發(fā)明進行了描述,但本發(fā)明并不局限于以上揭示的實施例,而應(yīng)當(dāng)涵蓋各種根據(jù)本發(fā)明的本質(zhì)進行的修改、等效組合。
本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。