<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Codgen代碼生成器

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

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

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

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

           

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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  www色撸 | 无码在线看高清 | 最近好看的2019中文在线小说 | 日比小视频 | 人人燥狠狠干 |