膩害了,我的哥,一鍵生成資料庫文件,堪稱資料庫界的Swagger

原文連結:https://mp。weixin。qq。com/s/uZVCzpFkmEoh0hUdzw3qAw

原作者:JavaGuide

今天分享一個好用的資料庫文件生成工具。

在專案中,我們經常需要整理資料庫表結構文件。

一般情況下,我們都是手動整理資料庫表結構文件,當表結構有變動的時候,自己手動進行維護。

資料庫表少的時候還好,資料庫表多了之後,手動整理和維護資料庫表結構文件簡直不要太麻煩,而且,還非常容易出錯!

有沒有什麼好用的工具幫助我們自動生成資料庫表結構文件呢?

當然有!Github 上就有一位朋友開源了一款資料庫表結構文件自動生成工具——

screw

專案地址:

https://github。com/pingfangushi/screw

膩害了,我的哥,一鍵生成資料庫文件,堪稱資料庫界的Swagger

screw 翻譯過來的意思就是螺絲釘,作者希望這個工具能夠像螺絲釘一樣切實地幫助到我們的開發工作。

目前的話,screw 已經支援市面上大部分常見的資料庫比如 MySQL、MariaDB、Oracle、SqlServer、PostgreSQL、TiDB。

另外,screw 使用起來也非常簡單,根據官網提示,不用 10 分鐘就能成功在本地使用起來!

快速入門

為了驗證 screw 自動生成資料庫表結構文件的效果,我們首先建立一個簡單的存放部落格資料的資料庫表。

CREATE TABLE `blog` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘主鍵’, `title` varchar(255) NOT NULL COMMENT ‘部落格標題’, `content` longtext NOT NULL COMMENT ‘部落格內容’, `description` varchar(255) DEFAULT NULL COMMENT ‘部落格簡介’, `cover` varchar(255) DEFAULT NULL COMMENT ‘部落格封面圖片地址’, `views` int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘部落格閱讀次數’, `user_id` bigint(20) DEFAULT ‘0’ COMMENT ‘發表部落格的使用者ID’, `channel_id` bigint(20) NOT NULL COMMENT ‘部落格分類ID’, `recommend` bit(1) NOT NULL DEFAULT b‘0’ COMMENT ‘是否推薦’, `top` bit(1) NOT NULL DEFAULT b‘0’ COMMENT ‘是否置頂’, `comment` bit(1) NOT NULL DEFAULT b‘1’ COMMENT ‘是否開啟評論’, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘建立時間’, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘更新時間’, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COMMENT=‘部落格’;

基於 Java 程式碼

引入依賴

建立一個普通的 Maven 專案即可!然後引入 screw、HikariCP、MySQL 這 3 個依賴。

<!——screw——> cn。smallbun。screw screw-core 1。0。5<!—— HikariCP ——> com。zaxxer HikariCP 3。4。5<!——MySQL——> mysql mysql-connector-java 8。0。20

你可以透過下面的地址在 mvnrepository 獲取最新版本的 screw。

https://mvnrepository。com/artifact/cn。smallbun。screw/screw-core

編寫程式碼

生成資料庫文件的程式碼的整個程式碼邏輯還是比較簡單的,我們只需要經過下面 5 步即可:

// 1。獲取資料來源DataSource dataSource = getDataSource();// 2。獲取資料庫文件生成配置(檔案路徑、檔案型別)EngineConfig engineConfig = getEngineConfig();// 3。獲取資料庫表的處理配置,可忽略ProcessConfig processConfig = getProcessConfig();// 4。Screw 完整配置Configuration config = getScrewConfig(dataSource, engineConfig, processConfig);// 5。執行生成資料庫文件new DocumentationExecute(config)。execute();

1、獲取資料庫源

對資料庫以及資料庫連線池進行相關配置。務必將資料庫相關的配置修改成你自己的。

/** * 獲取資料庫源 */private static DataSource getDataSource() { //資料來源 HikariConfig hikariConfig = new HikariConfig(); hikariConfig。setDriverClassName(“com。mysql。cj。jdbc。Driver”); hikariConfig。setJdbcUrl(“jdbc:mysql://127。0。0。1:3306/javaguide-blog”); hikariConfig。setUsername(“root”); hikariConfig。setPassword(“123456”); //設定可以獲取tables remarks資訊 hikariConfig。addDataSourceProperty(“useInformationSchema”, “true”); hikariConfig。setMinimumIdle(2); hikariConfig。setMaximumPoolSize(5); return new HikariDataSource(hikariConfig);}

2、獲取檔案生成配置

這一步會指定資料庫文件生成的位置、檔案型別以及檔名稱。

/** * 獲取檔案生成配置 */private static EngineConfig getEngineConfig() { //生成配置 return EngineConfig。builder() //生成檔案路徑 。fileOutputDir(“/Users/guide/Documents/程式碼示例/screw-demo/doc”) //開啟目錄 。openOutputDir(true) //檔案型別 。fileType(EngineFileType。HTML) //生成模板實現 。produceType(EngineTemplateType。freemarker) //自定義檔名稱 。fileName(“資料庫結構文件”)。build();}

如果不配置生成檔案路徑的話,預設也會存放在專案的

doc

目錄下。

另外,我們這裡指定生成的檔案格式為 HTML。除了 HTML 之外,screw 還支援 Word 、Markdown 這兩種檔案格式。

不太建議生成 Word 格式,比較推薦 Markdown 格式。

3、獲取資料庫表的處理配置

這一步你可以指定忽略生成哪些表。

/** * 獲取資料庫表的處理配置,可忽略 */private static ProcessConfig getProcessConfig() { return ProcessConfig。builder() // 指定只生成 blog 表 。designatedTableName(new ArrayList<>(Collections。singletonList(“blog”))) 。build();}

還可以指定只生成哪些表。

private static ProcessConfig getProcessConfig() { ArrayList ignoreTableName = new ArrayList<>(); ignoreTableName。add(“test_user”); ignoreTableName。add(“test_group”); ArrayList ignorePrefix = new ArrayList<>(); ignorePrefix。add(“test_”); ArrayList ignoreSuffix = new ArrayList<>(); ignoreSuffix。add(“_test”); return ProcessConfig。builder() //忽略表名 。ignoreTableName(ignoreTableName) //忽略表字首 。ignoreTablePrefix(ignorePrefix) //忽略表字尾 。ignoreTableSuffix(ignoreSuffix) 。build();}

這一步也可以省略。如果不指定

ProcessConfig

的話,就會按照預設配置來!

4、生成 screw 完整配置

根據前面 3 步,生成 screw 完整配置。

private static Configuration getScrewConfig(DataSource dataSource, EngineConfig engineConfig, ProcessConfig processConfig) { return Configuration。builder() //版本 。version(“1。0。0”) //描述 。description(“資料庫設計文件生成”) //資料來源 。dataSource(dataSource) //生成配置 。engineConfig(engineConfig) //生成配置 。produceConfig(processConfig) 。build();}

5、執行生成資料庫文件

膩害了,我的哥,一鍵生成資料庫文件,堪稱資料庫界的Swagger

下圖就是生成的 HTML 格式的資料庫設計文件。

膩害了,我的哥,一鍵生成資料庫文件,堪稱資料庫界的Swagger

基於 Maven 外掛

除了基於 Java 程式碼這種方式之外,你還可以透過 screw 提供的 Maven 外掛來生成資料庫文件。方法也非常簡單!

1、配置 Maven 外掛

務必將資料庫相關的配置修改成你自己的。

cn。smallbun。screw screw-maven-plugin 1。0。5 <!—— HikariCP ——> com。zaxxer HikariCP 3。4。5 <!——mysql driver——> mysql mysql-connector-java 8。0。20 <!——username——> root <!——password——> 123456 <!——driver——> com。mysql。cj。jdbc。Driver <!——jdbc url——> jdbc:mysql://127。0。0。1:3306/javaguide-blog <!——生成檔案型別——> MD <!——開啟檔案輸出目錄——> true <!——生成模板——> freemarker <!——文件名稱 為空時:將採用[資料庫名稱-描述-版本號]作為文件名稱——> 資料庫結構文件 <!——描述——> 資料庫設計文件生成 <!——版本——> ${project。version} <!——標題——> 資料庫文件 compile run

2、手動執行生成資料庫文件

膩害了,我的哥,一鍵生成資料庫文件,堪稱資料庫界的Swagger

我們這裡指定生成的是 Markdown 格式。

膩害了,我的哥,一鍵生成資料庫文件,堪稱資料庫界的Swagger

下圖就是生成的 Markdown 格式的資料庫設計文件,效果還是非常不錯的!

膩害了,我的哥,一鍵生成資料庫文件,堪稱資料庫界的Swagger