大家好,我是 Java陳序員
。
在企業級開發中,我們經常會有編寫資料庫表結構文件的需求,常常需要手寫維護文件,很是繁瑣。
今天,給大家介紹一款資料庫表結構文件生成工具。
關注微信公眾號:【Java陳序員】,獲取開源專案分享、AI副業分享、超200本經典計算機電子書籍等。
專案介紹
screw
—— 螺絲釘(代表企業級開發中一顆永不生鏽的螺絲釘),是一款簡潔好用的資料庫表結構文件生成工具。
screw
主打簡潔、輕量,支援多種資料庫、多種格式文件,可自定義模板進行靈活擴充。
- 支援 MySQL、MariaDB、TIDB、Oracle 多種資料庫。
- 支援生成 HTML、Word、MarkDown 三種格式的文件。
快速上手
screw
有普通方式、Maven 外掛的兩種方式來生成文件。
普通方式
1、引入依賴
<!-- 引入資料庫驅動,這裡以 MySQL 為例 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<!-- 引入 screw -->
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.5</version>
</dependency>
2、編寫程式碼
public class DocumentGeneration {
/**
* 文件生成
*/
@Test
public void documentGeneration() {
// 文件生成路徑
String fileOutputPath = "D:\\database";
// 資料來源
HikariConfig hikariConfig = new HikariConfig();
// 指定資料庫驅動
hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
// 設定資料庫連線地址
hikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/database");
// 設定資料庫使用者
hikariConfig.setUsername("root");
// 設定資料庫密碼
hikariConfig.setPassword("root");
// 設定可以獲取 tables remarks 資訊
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
DataSource dataSource = new HikariDataSource(hikariConfig);
// 生成配置
EngineConfig engineConfig = EngineConfig.builder()
// 生成檔案路徑
.fileOutputDir(fileOutputPath)
// 開啟目錄
.openOutputDir(true)
// 檔案型別 HTML、WORD、MD 三種型別
.fileType(EngineFileType.HTML)
// 生成模板實現
.produceType(EngineTemplateType.freemarker)
// 自定義檔名稱
.fileName("Document")
.build();
// 忽略表
ArrayList<String> ignoreTableName = new ArrayList<>();
ignoreTableName.add("test_user");
ignoreTableName.add("test_group");
//忽略表字首
ArrayList<String> ignorePrefix = new ArrayList<>();
ignorePrefix.add("test_");
//忽略表字尾
ArrayList<String> ignoreSuffix = new ArrayList<>();
ignoreSuffix.add("_test");
ProcessConfig processConfig = ProcessConfig.builder()
// 指定生成邏輯、當存在指定表、指定表字首、指定表字尾時,將生成指定表,其餘表不生成、並跳過忽略表配置
// 根據名稱指定表生成
.designatedTableName(new ArrayList<>())
// 根據表字首生成
.designatedTablePrefix(new ArrayList<>())
// 根據表字尾生成
.designatedTableSuffix(new ArrayList<>())
// 忽略表名
.ignoreTableName(ignoreTableName)
// 忽略表字首
.ignoreTablePrefix(ignorePrefix)
// 忽略表字尾
.ignoreTableSuffix(ignoreSuffix)
.build();
//配置
Configuration config = Configuration.builder()
// 版本
.version("1.0.0")
// 描述
.description("資料庫設計文件生成")
// 資料來源
.dataSource(dataSource)
// 生成配置
.engineConfig(engineConfig)
// 生成配置
.produceConfig(processConfig)
.build();
//執行生成
new DocumentationExecute(config).execute();
}
}
3、執行程式碼輸出文件
Maven 外掛
1、引入依賴
<build>
<plugins>
<plugin>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-maven-plugin</artifactId>
<version>1.0.5</version>
<dependencies>
<!-- HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
<!--mysql driver-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
</dependencies>
<configuration>
<!-- 資料庫使用者名稱 -->
<username>root</username>
<!-- 資料庫密碼 -->
<password>password</password>
<!-- 資料庫驅動 -->
<driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
<!-- 資料庫連線地址 -->
<jdbcUrl>jdbc:mysql://127.0.0.1:3306/xxxx</jdbcUrl>
<!-- 生成的檔案型別 HTML、WORD、MD 三種型別 -->
<fileType>HTML</fileType>
<!-- 開啟檔案輸出目錄 -->
<openOutputDir>false</openOutputDir>
<!-- 生成模板 -->
<produceType>freemarker</produceType>
<!-- 文件名稱 為空時:將採用[資料庫名稱-描述-版本號]作為文件名稱 -->
<fileName>資料庫文件</fileName>
<!-- 描述 -->
<description>資料庫文件生成</description>
<!-- 版本 -->
<version>${project.version}</version>
<!-- 標題 -->
<title>資料庫文件</title>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2、執行外掛
3、使用 Maven 外掛執行的方式會將文件輸出到專案根目錄的 doc
目錄下
文件截圖
HTML 型別文件
Word 型別文件
MarkDown 型別文件
自從用了 screw
後,編寫資料庫文件資訊就很方便了,一鍵生成,剩下的時間就可以用來摸魚了~
大家如果下次有需要編寫資料庫文件,可以考慮使用 screw
,建議先把本文收藏起來,下次就不會找不到了~
最後,貼上專案地址:
https://github.com/pingfangushi/screw
最後
推薦的開源專案已經收錄到 GitHub
專案,歡迎 Star
:
https://github.com/chenyl8848/great-open-source-project
或者訪問網站,進行線上瀏覽:
https://chencoding.top:8090/#/
大家的點贊、收藏和評論都是對作者的支援,如文章對你有幫助還請點贊轉發支援下,謝謝!