实用!一键生成数据库文档的神器,支持MySQL/SqlServer/Oracle多种数据库
😆Screw(螺丝钉)是一款简洁好用的数据库表结构文档生成工具,它的特点是:简洁、轻量、设计良好、多数据库支持、多种格式文档、灵活扩展以及支持自定义模板,对于有经常要进行数据库设计、评审、文档整理等需求的人来说就是福音~。可以解决团队间数据库文档的传递和更新问题,项目验收时可以通过此工具快速生成标准的数据库验收文档。
Screw支持的数据库有:
1.MySQL
2.MariaDB
3.TIDB
4.Oracle
5.SqlServer
6.PostgreSQL
7.Cache DB
Screw支持的导出文档类型有:
1.html
2.word
3.markdwon
项目中如何使用Screw数据库文档生成工具
可以使用Maven插件运行也可以编写Java类代码运行
首先导入如下依赖
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
1.Maven插件运行
点击maven--》plugins--》screw --》run
<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 -->
<username>root</username>
<!--password -->
<password>root</password>
<!--driver -->
<driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
<!--jdbc url -->
<jdbcUrl>jdbc:mysql://127.0.0.1:3307/hotel?serverTimezone=UTC</jdbcUrl>
<!--生成文件类型 -->
<fileType>WORD</fileType>
<!--打开文件输出目录 -->
<openOutputDir>true</openOutputDir>
<!--生成模板 -->
<produceType>freemarker</produceType>
<!--文档名称 为空时:将采用[数据库名称-描述-版本号]作为文档名称 -->
<fileName>酒店管理系统数据库设计文档V2.0</fileName>
<!--描述 -->
<description>数据库文档生成</description>
<!--版本 -->
<version>${project.version}</version>
<!--标题 -->
<title>数据库文档</title>
</configuration>
</plugin>
2、编写Java类RunDoc运行生成数据库文档
package com.creatorblue;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
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 gavin
*
*/
public class RunDoc {
/**
* 文档生成
* @throws IOException
*/
void documentGeneration() throws IOException {
// 数据源
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3307/hotel?characterEncoding=UTF-8");
hikariConfig.setUsername("root");
hikariConfig.setPassword("root");
// 设置可以获取tables remarks信息
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
DataSource dataSource = new HikariDataSource(hikariConfig);
// 生成文件路径
File directory = new File("");//参数为空
String fileOutputDir = directory.getCanonicalPath()+"/doc";
// 生成配置
EngineConfig engineConfig = EngineConfig.builder()
// 生成文件路径
.fileOutputDir(fileOutputDir)
// 打开目录
.openOutputDir(true)
// 文件类型为HMTL
.fileType(EngineFileType.HTML)
// 文件类型为DOC
// .fileType(EngineFileType.DOC)
// 生成模板实现
.produceType(EngineTemplateType.freemarker)
// 自定义文件名称
.fileName("酒店管理系统数据库设计文档").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();
}
public static void main(String[] args) throws IOException {
RunDoc doc = new RunDoc();
doc.documentGeneration();
}
}