本發明涉及計算機軟件技術領域,具體而言涉及一種代碼生成方法及代碼生成裝置。
背景技術:
人們利用計算機軟件與硬件實現辦公自動化、管理自動化的同時也在考慮程序代碼的自動生成。人們利用計算機軟件與硬件實現辦公自動化、管理自動化的同時也在考慮程序代碼的自動生成。為了降低軟件開發得強度縮短開發周期減少代碼的重復書寫,減輕程序員的編程負擔,現在市面上也有很多代碼生成器出現。
但是很多代碼生成器一般人只注重程序的編寫速度與質量,卻忽略其靈活性。因為生成代碼的需求各種各樣,而且對于代碼的質量要求也不一致。現有的代碼生成器要么操作方便但只能生成簡單的代碼。而適用于相對復雜的代碼的代碼生成器,它的操作就相對復雜。那么,代碼生成器在保證適用各種代碼生成的狀況下還能夠靈活運用是需要思考的問題。
技術實現要素:
鑒于此,本發明實施例提供一種代碼生成方法與代碼生成裝置,用于解決現有的代碼生成器運用不夠靈活的問題。
本發明實施例提供的代碼生成方法,包括以下步驟:響應用戶請求指令,編輯代碼模板;存儲所述代碼模板;接收用戶輸入的生成所需代碼的基本信息及模板文件路徑,所述基本信息包括代碼輸出路徑、模塊名稱、數據庫類型及選擇的數據表信息;根據所述模板文件路徑,提取對應的代碼模板;根據所述基本信息及所述提取對應的代碼模板生成代碼。
可選地,根據所述基本信息及所述提取對應的代碼模板生代碼還包括以下步驟:將所述數據庫類型及數據表信息填充到提取的代碼模板中的相應位置,得到所述生成的代碼。
可選地,數據庫類型為網狀數據庫(Network Database)、關系數據庫(Relational Database)、樹狀數據庫(Hierarchical Database)、面向對象數據庫(Object-oriented Database)中的至少一種。所述關系數據庫為Oracle、DB2、Sybase、MS SQL Server及MySQL中的至少一種。
可選地,所述選擇的數據表可為多個,多個選擇的數據表生成多個待生成代碼進行合并。
可選地,所述模板文件路徑也可為根據所述用戶輸入的數據庫類型自動搜索提取。
本發明實施例提供的一種代碼生成裝置,其包括:模板生成單元,用于響應用戶請求指令,編輯代碼模板;模板存儲單元,用于存儲所述代碼模板;信息輸入單元,用于接收用戶輸入的生成所需代碼的基本信息及模板文件路徑,所述基本信息包括代碼輸出路徑、模塊名稱、數據庫類型及選擇的數據表信息;模板提取單元,根據所述模板文件路徑,提取所述對應的代碼模板;代碼生成單元,根據所述基本信息及所述提取對應的代碼模板生成代碼。
可選地,所述代碼生成單元還用于將所述數據庫類型及數據表信息填充到提取的代碼模板中的相應位置,得到所述生成的代碼。
可選地,數據庫類型為網狀數據庫(Network Database)、關系數據庫(Relational Database)、樹狀數據庫(Hierarchical Database)、面向對象數據庫(Object-oriented Database)中的至少一種。所述關系數據庫為Oracle、DB2、Sybase、MS SQL Server及MySQL中的至少一種。
可選地,所述選擇的數據表可為多個,多個選擇的數據表生成多個待生成代碼進行合并。
可選地,所述模板文件路徑也可為根據所述用戶輸入的數據庫類型自動搜索提取。
本發明所提供的代碼生成方法及代碼生成器能夠適用于不同的代碼需求,避免了針對每個代碼需求單獨制定生成器,可以節省人力的投入且提升代碼生成的效率。而且上述代碼生成方法及代碼生成器具有普遍適用性,較為靈活。
附圖說明
圖1是本發明一實施例的代碼生成方法的流程示意圖;
圖2是本發明一實施例的代碼生成裝置的結構示意圖;
圖3是本發明一實施例輸入生成代碼的基本信息的示意圖;
具體實施方式
圖1是本發明一實施例的代碼生成方法的流程示意圖,代碼生成方法及代碼生成裝置可以自動生成代碼,代碼生成方法是一種自動轉換機制或者一種由源模型到目標模型的映射,它是用工具程序(代碼生成器)生成文檔、界面、程序段等。所述代碼生成方法,包括以下步驟:
S101,響應用戶請求指令,編輯代碼模板;
在一些實施例中,代碼模板可以是預先設置在系統中的,也可以是用戶通過系統進行自定義配置的,或者是直接從系統外部導入的。
S103,存儲所述代碼模板;
在一些實施例中,所述代碼模板上具有轉化模型元素為物理工件的指令。各個模板的模板結構,包括文本指令、分支指令、循環指令和賦值指令四種。每個模板具有這四種指令中的一種或多種指令。
S105,接收用戶輸入的生成所需代碼的基本信息及模板文件路徑,所述基本信息包括代碼輸出路徑、模塊名稱、數據庫類型及選擇的數據表信息;
在一些實施例中,所述接收用戶輸入基本信息,所述基本信息包括代碼輸出路徑、模塊名稱、數據庫類型及選擇的數據表信息。根據所述用戶選擇的數據表獲取數據表的關鍵信息,所述關鍵信息包括數據表的字段名和字段類型。
所述數據庫類型為網狀數據庫(Network Database)、關系數據庫(Relational Database)、樹狀數據庫(Hierarchical Database)、面向對象數據庫(Object-oriented Database)中的至少一種。
所述關系數據庫為Oracle、DB2、Sybase、MS SQL Server及MySQL中的至少一種。
S107,根據所述模板文件路徑,提取對應的代碼模板;
在一些實施例中,用戶手動輸入模板文件路徑,能夠提取對應的代碼模板。上述方法基于數據庫端的單點啟動任務建設,從提交代碼的結構信息到各模板代碼的自動生成以及表結構文檔的自動化生成,實現一種輕量級的代碼生成,貢獻于敏捷開發過程中的各類程序員,該代碼生成器在于使用的語言很廣,從一個程序員常規的前端到后端的常用模板幾乎都是自動生成輕量級模板,讓其選取使用,而不在于某一種代碼做得非常特殊。
所述模板文件路徑也可為根據所述用戶輸入的數據庫類型自動搜索提取。
S109,根據所述基本信息及所述提取對應的代碼模板生成代碼。
在一些實施例中,將所述數據庫類型及數據表信息填充到提取的代碼模板中的相應位置,得到所述生成的代碼。所述選擇數據表的關鍵信息包括數據表的字段名和字段類型。將所述數據表的信息以及用戶輸入的其他基本信息填充到提取的代碼模板中,得到待生成代碼。其中,代碼模板的填充是基于關鍵字原則,在關鍵字內容處進行相應位置的替換,如表名稱、列區域、注釋區域等等,在內容尚未組裝完成前,他們不會替換,而是各自按照語法規則進行組裝;另外,代碼模板中的基本屬性和數據類型也是基于一個模板分類來完成,并最終完成統一的關鍵字校驗、類型定義限制等等。
在一些實施例中,所述選擇的數據表可為多個,多個選擇的數據表生成多個待生成代碼進行合并。舉例說明,將生成的兩個腳本類代碼Creat Table(1)和Creat Table(2)合并,該步驟可以為MYSQL數據庫中的腳本合并,多個開發人員以及DBA對同一個表操作后,此時會對這類SQL腳本代碼進行合并,將對同一個表的操作合并在一條SQL腳本代碼中,執行的依據和合并的基礎是變更中產生的表變更和表有一對多的對應關系。DBA和開發也可以將腳本類代碼從中導出,使對應的測試環境、預發環境、生成環境等保持一致。
請參閱圖2,圖2為一實施例的代碼生成裝置的結構示意圖,所述代碼生成裝置可以安裝在一臺數據處理裝置中,例如計算機及服務器中。代碼生成裝置100包括:
模板生成單元101,用于響應用戶請求指令,編輯代碼模板;
在一些實施例中,代碼模板可以是預先設置在系統中的,也可以是用戶通過系統進行自定義配置的,或者是直接從系統外部導入的。
模板存儲單元103,用于存儲所述代碼模板;
在一些實施例中,所述代碼存儲單元103可為:智能媒體卡(smart media card)、安全數字卡(secure digital card)及快閃存儲卡(flash card)等存儲設備。
所述模板存儲單元103存儲的代碼模板上具有轉化模型元素為物理工件的指令。各個模板的模板結構,包括文本指令、分支指令、循環指令和賦值指令四種。每個模板具有這四種指令中的一種或多種指令。
信息輸入單元105,用于接收用戶輸入的生成所需代碼的基本信息及模板文件路徑,所述基本信息包括代碼輸出路徑、模塊名稱、數據庫類型及選擇的數據表信息;
在一些實施例中,所述信息輸入單元105,接收用戶輸入基本信息,所述基本信息包括代碼輸出路徑、模塊名稱、數據庫類型及選擇的數據表信息。根據所述用戶選擇的數據表獲取數據表的關鍵信息,所述關鍵信息包括數據表的字段名和字段類型。
所述數據庫類型為網狀數據庫(Network Database)、關系數據庫(Relational Database)、樹狀數據庫(Hierarchical Database)、面向對象數據庫(Object-oriented Database)中的至少一種。網狀數據庫
所述關系數據庫為Oracle、DB2、Sybase、MS SQL Server及MySQL中的至少一種。
模板提取單元107,根據所述模板文件路徑,提取所述對應的代碼模板;
在一些實施例中,所述模板提取單元107根據用戶手動輸入模板文件路徑,提取對應的代碼模板。上述方法基于數據庫端的單點啟動任務建設,從提交代碼的結構信息到各模板代碼的自動生成以及表結構文檔的自動化生成,實現一種輕量級的代碼生成,貢獻于敏捷開發過程中的各類程序員,該代碼生成器在于使用的語言很廣,從一個程序員常規的前端到后端的常用模板幾乎都是自動生成輕量級模板,讓其選取使用,而不在于某一種代碼做得非常特殊。
所述模板提取單元107根據所述用戶輸入的數據庫類型自動搜索提取。
代碼生成單元109,根據所述基本信息及所述提取對應的代碼模板生成代碼。
在一些實施例中,所述代碼生成單元109將所述數據庫類型及數據表信息填充到提取的代碼模板中的相應位置,得到所述生成的代碼。所述選擇數據表的關鍵信息包括數據表的字段名和字段類型。代碼生成的過程中,需要和數據庫對應一次或多次,并且保證命名規則和數據類型的一致性。將所述數據表的關鍵信息以及用戶輸入的基本信息填充到提取的代碼模板中,得到待生成代碼。其中,代碼模板的填充是基于關鍵字原則,在關鍵字內容處進行相應位置的替換,如表名稱、列區域、注釋區域等等,在內容尚未組裝完成前,他們不會替換,而是各自按照語法規則進行組裝;另外,代碼模板中的基本屬性和數據類型也是基于一個模板分類來完成,并最終完成統一的關鍵字校驗、類型定義限制等等。
所述選擇的數據表可為多個,多個選擇的數據表生成多個待生成代碼進行合并。舉例說明,將生成的兩個腳本類代碼Creat Table(1) 和Creat Table(2)合并,該步驟可以為MYSQL數據庫中的腳本合并,多個開發人員以及DBA對同一個表操作后,此時會對這類SQL腳本代碼進行合并,將對同一個表的操作合并在一條SQL腳本代碼中,執行的依據和合并的基礎是變更中產生的表變更和表有一對多的對應關系。DBA和開發也可以將腳本類代碼從中導出,使對應的測試環境、預發環境、生成環境等保持一致。
如圖3所示,為輸入生成代碼的基本信息在代碼生成裝置界面中的顯示效果,在對應處輸入相應的信息。
本實施例的上述功能如果以軟件功能單元的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中,即,本發明實施例可以以軟件產品的形式體現出來,其包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。
在此基礎上,以上所述僅為本發明的實施例,并非因此限制本發明的專利范圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,例如各實施例之間技術特征的相互結合,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護范圍內。