简介

在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人,于是需要一个插件工具screw[1]来维护。

screw 特点

  • 简洁、轻量、设计良好。不需要 powerdesigner 这种重量的建模工具

  • 多数据库支持 。支持市面常见的数据库类型 MySQL、Oracle、SqlServer

  • 多种格式文档。支持 MD、HTML、WORD 格式

  • 灵活扩展。支持用户自定义模板和展示样式

支持数据库类型

  • [✔️] MySQL

  • [✔️] MariaDB

  • [✔️] TIDB

  • [✔️] Oracle

  • [✔️] SqlServer

  • [✔️] PostgreSQL

  • [✔️] Cache DB

依赖

这里以 mysql8 数据库为例子

        cn.smallbun.screw      screw-core      1.0.2            com.zaxxer      HikariCP      3.4.5            mysql      mysql-connector-java      8.0.20  

1. 通过自定义代码配置文档生成

@Test public void shouldAnswerWithTrue() {     //数据源     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("root");     //设置可以获取tables remarks信息     hikariConfig.addDataSourceProperty("useInformationSchema", "true");     hikariConfig.setMinimumIdle(2);     hikariConfig.setMaximumPoolSize(5);     DataSource dataSource = new HikariDataSource(hikariConfig);     //生成配置     EngineConfig engineConfig = EngineConfig.builder()             //生成文件路径             .fileOutputDir("/Users/lengleng")             //打开目录             .openOutputDir(true)             //文件类型             .fileType(EngineFileType.HTML)             //生成模板实现             .produceType(EngineTemplateType.freemarker).build();      //忽略表     ArrayList ignoreTableName = new ArrayList<>();     ignoreTableName.add("test_user");     ignoreTableName.add("test_group");     //忽略表前缀     ArrayList ignorePrefix = new ArrayList<>();     ignorePrefix.add("test_");     //忽略表后缀     ArrayList ignoreSuffix = new ArrayList<>();     ignoreSuffix.add("_test");     ProcessConfig processConfig = ProcessConfig.builder()             //忽略表名             .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(); }

2. 通过插件的形式生成文档

                           cn.smallbun.screw             screw-maven-plugin             1.0.2                                                                    com.zaxxer                     HikariCP                     3.4.5                                                                        mysql                     mysql-connector-java                     8.0.20                                                                             root                                  root                                  com.mysql.cj.jdbc.Driver                                  jdbc:mysql://127.0.0.1:3306/test                                  HTML                                  /Users/lengleng                                  false                                  freemarker                                  数据库文档生成                                  ${project.version}                                  数据库文档                                                                compile                                              run