超好用的数据库设计文档生成工具

原创声明:本文为作者(幻好)原创,可用做学习参考转载,但需注明出处。禁止未经允许用于商业等途径,否则后果自负!

前言概述

随着开发场景的复杂度越来越高,存储数据的数据库表也越来越多并不断的更新。在开发团队之间有时需要协作开发业务,一般需要整理最新的数据库设计文档,而人工维护文档的时间成本可能会很高而且容易出错,一旦出错就会给后续埋下很多坑,后果不堪设想。如果能够通过工具随时生成最新的数据库文档,就能大大的节省工作效率。
为了解决上述工作的问题,本文将推荐一个国产数据库设计文档设计插件工具——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 非常便捷,上手也快,感兴趣的同学可以动手试试。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值