原创声明:本文为作者(幻好)原创,可用做学习参考转载,但需注明出处。禁止未经允许用于商业等途径,否则后果自负!
前言概述
随着开发场景的复杂度越来越高,存储数据的数据库表也越来越多并不断的更新。在开发团队之间有时需要协作开发业务,一般需要整理最新的数据库设计文档,而人工维护文档的时间成本可能会很高而且容易出错,一旦出错就会给后续埋下很多坑,后果不堪设想。如果能够通过工具随时生成最新的数据库文档,就能大大的节省工作效率。
为了解决上述工作的问题,本文将推荐一个国产数据库设计文档设计插件工具——SCREW。
SCREW
简介
screw (螺丝钉) 是一款开源、简洁好用的数据库表结构文档生成工具,由国人开发,适合国人业务场景。
screw (螺丝钉)的名字含义摘自雷锋日记:虽然是细小的螺丝钉,是个细微的小齿轮,然而如果缺了它,那整个的机器就无法运转了,慢说是缺了它,即使是一枚小螺丝钉没拧紧,一个小齿轮略有破损,也要使机器的运转发生故障的。
项目开源地址:https://github.com/pingfangushi/screw
特点
screw具有以下特点:
- 相比与powerdesigner 的重量级,screw 更加简洁、轻量且设计良好。
- 支持多种数据库,目前支持市面常见的数据库:MySQL、Oracle、SqlServer、PostgreSQL等。
- 支持多种格式文档,目前支持生成 word、html、markdown格式文档。
- 支持灵活扩展,能够使用pojo生成功能直接根据数据库生成对应的java pojo对象。
- 支持自定义模板,能够通过简单属性配置自定义模板样式。
使用SCREW生成文档
环境准备
- 安装数据库:MySQL 5.7,并创建业务表
- 搭建简单的 Maven 项目
操作步骤
数据库表
准备好需要生成数据库的表,除了 sys_config
其他都生成文档。
引入依赖组件
<!--screw组件-->
<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>
编写代码
public class DataToDocument {
@Test
public void dataDocMaker() {
// 配置数据源
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/crawler?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8");
hikariConfig.setUsername("root");
hikariConfig.setPassword("root");
// 获取表中字段的备注信息
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
DataSource dataSource = new HikariDataSource(hikariConfig);
// 配置需要忽略不生成文档的表
ArrayList<String> ignoreTableName = new ArrayList<>();
ignoreTableName.add("sys_config");
// 配置需要忽略忽略含有以下前缀的表
ArrayList<String> ignorePrefix = new ArrayList<>();
ignorePrefix.add("sys_");
// 配置需要忽略忽略含有以下后缀的表
ArrayList<String> ignoreSuffix = new ArrayList<>();
ignoreSuffix.add("_config");
// 将忽略规则配置到流程中
ProcessConfig processConfig = ProcessConfig.builder()
.ignoreTableName(ignoreTableName)
.ignoreTablePrefix(ignorePrefix)
.ignoreTableSuffix(ignoreSuffix).build();
// 文档属性生成配置
EngineConfig engineConfig = EngineConfig.builder()
// 文档生成路径
.fileOutputDir("src/main/resources/temp")
// 文档生成后自动打开目录
.openOutputDir(true)
// 文件类型
.fileType(EngineFileType.WORD)
// 生成模板实现
.produceType(EngineTemplateType.freemarker).build();
// 文档信息配置
Configuration config = Configuration.builder()
// 设置文档版本
.version("1.0.0")
// 设置描述
.description("数据库设计文档说明")
// 设置数据源
.dataSource(dataSource)
.produceConfig(processConfig)
.engineConfig(engineConfig).build();
// 最后执行生成
new DocumentationExecute(config).execute();
}
}
生成结果
文档生成成功后,会自动打开文档目录。
打开文档后,可以看到能够将数据库中每个字段及其相关属性完整的展示。
总结
如果工作中需要经常使用数据库设计文档,可以使用 screw 工具,提高工作效率,减少维护文档的时间成本。
总体体验 screw 非常便捷,上手也快,感兴趣的同学可以动手试试。