自動生成數據庫表設計(三)之製作word模版

最近項目快了驗收,那麼接下來就是寫一些比較煩人的文檔,在寫數據庫設計文檔時,到了詳細設計這一塊有點尷尬了,每張表,沒個字段都要寫上去,由於前期沒有整理,所以這個工作量還是很大,我查看了我們的數據庫發現有353張表,這樣寫,得花多久的時間啊。。。於是想通過程序來自動完成,這就是這篇文章的核心。

系列文章:
自動生成數據庫表設計(一)之獲取JDBC獲取元數據
自動生成數據庫表設計(二)之Freemarker的基本使用
自動生成數據庫表設計(三)之製作word模版

本篇主要內容:
1、Word模版的製作
2、結合Freemarker生成word

Word模版的製作

新建moban.doc文檔,並將模版表格(這個格式可以是任意的,根據自己的情況跳整)複製進去,如下:

格式

然後將moban.doc另存爲moban.xml,再將moban.xml拷貝到idea,用idea打開,然後格式化

這是摺疊xml後的截圖,一般document裏存的內容,我們可以單獨看這塊

找到我們文中對應的表名以及其它需要動態生成的信息用Freemarker取變量值的形式替換。這裏可以看到河流以及YJHL這些是需要替換的

10.png

當然列也是如此,也是需要替換的

我們再看整體的結構

整理結構

你可以把大框的內容複製一份,粘貼在下面,然後把moban.xml改名爲moban.doc,用word打開,發現多了一段,這就說明,我們要根據表的數量來循環這部分內容,並替換表信息,同理,我們複製一行發現多了一列,那麼就說明我們也要循環列來獲取表的所有列,並做相應數據的替換。

如下:(其中table表示table的集合,t.COLUMNS表示 ,某張表下的列的集合)

循環

其中表相關信息替換如下:

替換表信息

其中列相關信息替換如下(同上理):

替換列相關信息

這樣我們就製作好了我們的word模版了,下面開始生成word。

結合Freemarker生成word

    public static void main(String[] args) throws Exception {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger");

        List<Map> tableList = getTableList(conn);
        conn.close();

        FtUtil ftUtil = new FtUtil();
        Map map = new HashMap<>();
        map.put("table", tableList);

        ftUtil.generateFile("/", "moban.xml", map, "D:/", "scott.doc");
    }

生成文檔如下:

moban.doc

OK,到此爲止利用JDBC+Freemarker生成數據庫詳細設計文檔全部完成。

文檔下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章