1. 簡介
在項目開發和交付階段,數據庫文檔是必不可少的。對於大型項目多個數據庫幾百甚至幾千張表來說,手寫數據庫文檔必然是耗時且痛苦的。因此需要一個插件自動生成文檔。
screw
提供了多種文件類型和多種模板的自動生成工具,上手簡單且效果不錯。
2. 支持數據庫類型
MySQL
MariaDB
TIDB
Oracle
SqlServer
PostgreSQL
Cache DB
其他正在開發中
3. 示例代碼
- 創建項目
- 修改pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.c3stones</groupId>
<artifactId>generate-database-document-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>generate-database-document-demo</name>
<description>Generate Database Document Demo</description>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- Screw Core -->
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.2</version>
</dependency>
<!-- 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>
</project>
- 創建生成類
import java.util.Arrays;
import java.util.List;
import javax.sql.DataSource;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import cn.smallbun.screw.core.Configuration;
import cn.smallbun.screw.core.engine.EngineConfig;
import cn.smallbun.screw.core.engine.EngineFileType;
import cn.smallbun.screw.core.engine.EngineTemplateType;
import cn.smallbun.screw.core.execute.DocumentationExecute;
import cn.smallbun.screw.core.process.ProcessConfig;
/**
* 生成數據庫文檔
*
* @author CL
*
*/
public class GenerateDatabaseDocumnet {
public static void main(String[] args) {
// 數據源
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test");
hikariConfig.setUsername("root");
hikariConfig.setPassword("123456");
// 設置可以獲取tables remarks信息
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
DataSource dataSource = new HikariDataSource(hikariConfig);
// 1、生成文件配置
EngineConfig engineConfig = EngineConfig.builder()
// 生成文件路徑
.fileOutputDir("C:\\Users\\Administrator\\Desktop")
// 打開目錄
.openOutputDir(false)
// 文件類型
.fileType(EngineFileType.HTML)
// 生成模板實現
.produceType(EngineTemplateType.freemarker).build();
// 忽略表名
List<String> ignoreTableName = Arrays.asList("test");
// 忽略表前綴
List<String> ignorePrefix = Arrays.asList("test_", "test");
// 忽略表后綴
List<String> ignoreSuffix = Arrays.asList("_test", "test");
// 2、配置想要忽略的表
ProcessConfig processConfig = ProcessConfig.builder().ignoreTableName(ignoreTableName)
.ignoreTablePrefix(ignorePrefix).ignoreTableSuffix(ignoreSuffix).build();
// 3、生成文檔配置(包含以下自定義版本號、描述等配置連接)
Configuration config = Configuration.builder().version("1.0.0").description("數據庫文檔").dataSource(dataSource)
.engineConfig(engineConfig).produceConfig(processConfig).build();
// 4、執行生成
new DocumentationExecute(config).execute();
}
}
- 運行即可
4. 說明
- 文件類型
EngineFileType
枚舉類中提供三種類型:HTML
、WORD
、MD
。 - 模板類型
EngineTemplateType
枚舉類中提供兩種類型:freemarker
、velocity
。 - 生成方式
一種是代碼生成,還有一種是通過Maven打包生成,詳情請查看:https://gitee.com/leshalv/screw