1. Codgen代碼生成器

        聯(lián)合創(chuàng)作 · 2023-09-28 03:36

        Codgen是一個(gè)基于數(shù)據(jù)庫(kù)元數(shù)據(jù)模型,使用freemarker模板引擎來(lái)構(gòu)建輸出的代碼生成器。freemarker的數(shù)據(jù)模型結(jié)構(gòu)通常來(lái)說(shuō)都是一個(gè)Map樹(shù)狀結(jié)構(gòu)模型,codgen也不例外,它的數(shù)據(jù)模型這棵樹(shù)的根節(jié)點(diǎn)一般包含一個(gè)TableModel(表數(shù)據(jù)模型)對(duì)象。TableModel顧名思義就是由一張數(shù)據(jù)庫(kù)表的元數(shù)據(jù)信息組成的一個(gè)數(shù)據(jù)模型,有了這個(gè)數(shù)據(jù)模型,再加上一套使用freemarker編寫(xiě)的多層架構(gòu)模板,就可以生成一套基于這個(gè)表的多層架構(gòu)代碼文件。

            總的來(lái)說(shuō),codgen具有以下主要功能及特性:
        1. 采用freemarker的構(gòu)建公式:數(shù)據(jù)模型+模板=輸出,默認(rèn)使用freeMarker模板引擎來(lái)生成代碼,但可以通過(guò)Builder接口實(shí)現(xiàn)其他構(gòu)建方式。
        2. 核心數(shù)據(jù)模型TableModel基于JDBC實(shí)現(xiàn)表元數(shù)據(jù)及其所有字段列的相關(guān)元數(shù)據(jù)信息的封裝。
        3. 數(shù)據(jù)模型TableModel基于JDBC實(shí)現(xiàn),可以取得大部分元數(shù)據(jù)信息,個(gè)別信息的取得與具體數(shù)據(jù)庫(kù)方言有關(guān),可以通過(guò)擴(kuò)展DbProvider來(lái)實(shí)現(xiàn)。
        4. 通過(guò)實(shí)現(xiàn)接口ColumnHandler,可以完成JDBC數(shù)據(jù)類(lèi)型到各種編程語(yǔ)言的類(lèi)型轉(zhuǎn)換操作及更多復(fù)雜的操作,如處理Oracle的大寫(xiě)列名以增強(qiáng)列名稱(chēng)的可讀性。
        5. 通過(guò)配置可以動(dòng)態(tài)增加或重定義數(shù)據(jù)模型,并可以被后面的數(shù)據(jù)模型通過(guò)模板語(yǔ)言引用或組裝。
        6. 構(gòu)建時(shí)指定的模板可以是一段文本字符串,也可以是一個(gè)文件路徑,并且它們的內(nèi)容里都可以引用已定義的數(shù)據(jù)模型。
        7. 構(gòu)建時(shí)指定的輸出類(lèi)型可以是文本,也可以是文件,指定的文件輸出路徑也可以引用數(shù)據(jù)模型變量。
        8. 項(xiàng)目配置引入繼承機(jī)制,這樣就可以重用在父類(lèi)配置中已定義的數(shù)據(jù)模型及其他配置信息。
        9. 項(xiàng)目配置信息可以分開(kāi)多個(gè)配置文件存放,codgen一次性加載并緩存起來(lái)以加速之后的訪問(wèn)。

         下圖為基于codgen開(kāi)發(fā)的一個(gè)代碼生成實(shí)踐示范項(xiàng)目mycodgen

         

        瀏覽 19
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
          
          

            1. 最近中文字幕高清中文字幕电影二 | 香港三日三级少妇三级66 | 挺进江湖女侠美妇翘臀深处 | 欧美大鸡吧视频 | 99热九九这里只有精品10 |