实用!一键生成数据库文档,堪称数据库界的Swagger

数据库 其他数据库
为了不重复 CV 操作,抱着一丝希望开始在GitHub里找,看看有没有什么工具可以用,结果就真的发现了宝藏,screw(螺丝钉),居然可以生成数据库文档,优秀啊~。

最近部门订单业务调整,收拢其他业务线的下单入口,做个统一大订单平台。需要梳理各业务线的数据表,但每个业务线库都有近百张和订单相关的表,挨个表一个一个字段的弄脑瓜子嗡嗡的。

为了不重复 CV 操作,抱着一丝希望开始在GitHub里找,看看有没有什么工具可以用,结果就真的发现了宝藏,screw(螺丝钉),居然可以生成数据库文档,优秀啊~。

数据库文档图

一、数据库支持

    MySQL

    MariaDB

    TIDB

    Oracle

    SqlServer

    PostgreSQL

    Cache DB

二、配置

1、pom文件

引入screw核心包,HikariCP数据库连接池,HikariCP号称性能最出色的数据库连接池。 

  1. <!-- screw核心 -->  
  2. <dependency>  
  3.     <groupId>cn.smallbun.screw</groupId>  
  4.     <artifactId>screw-core</artifactId>  
  5.     <version>1.0.3</version>  
  6. </dependency>  
  7. <!-- HikariCP -->  
  8. <dependency>  
  9.     <groupId>com.zaxxer</groupId>  
  10.     <artifactId>HikariCP</artifactId>  
  11.     <version>3.4.5</version>  
  12. </dependency>  
  13. <!--mysql driver-->  
  14. <dependency>  
  15.     <groupId>mysql</groupId>  
  16.     <artifactId>mysql-connector-java</artifactId>  
  17.     <version>8.0.20</version>  
  18. </dependency> 

2、配置数据源

配置数据源,设置 useInformationSchema 可以获取tables注释信息。 

  1. spring.datasource.url=jdbc:mysql://45.93.1.5:3306/fire?useUnicode=true&characterEncoding=UTF-8&useSSL=false  
  2. spring.datasource.username=root  
  3. spring.datasource.password=123456  
  4. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver  
  5. spring.datasource.xa.properties.useInformationSchema=true  

3、screw 核心配置

screw有两种执行方式,第一种是pom文件配置,另一种是代码执行。 

  1.  <build>  
  2.     <plugins>  
  3.         <plugin>  
  4.             <groupId>org.springframework.boot</groupId>  
  5.             <artifactId>spring-boot-maven-plugin</artifactId>  
  6.         </plugin>  
  7.         <plugin> 
  8.              <groupId>cn.smallbun.screw</groupId>  
  9.             <artifactId>screw-maven-plugin</artifactId>  
  10.             <version>1.0.3</version>  
  11.             <dependencies>  
  12.                 <!-- HikariCP -->  
  13.                 <dependency> 
  14.                     <groupId>com.zaxxer</groupId>  
  15.                     <artifactId>HikariCP</artifactId>  
  16.                     <version>3.4.5</version>  
  17.                 </dependency>  
  18.                 <!--mysql driver-->  
  19.                 <dependency>  
  20.                     <groupId>mysql</groupId>  
  21.                     <artifactId>mysql-connector-java</artifactId>  
  22.                     <version>8.0.20</version>  
  23.                 </dependency>  
  24.             </dependencies>  
  25.             <configuration> 
  26.                  <!--username-->  
  27.                 <username>root</username>  
  28.                 <!--password-->  
  29.                 <password>123456</password>  
  30.                 <!--driver-->  
  31.                 <driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>  
  32.                 <!--jdbc url-->  
  33.                 <jdbcUrl>jdbc:mysql://41.92.6.5:3306/fire</jdbcUrl>  
  34.                 <!--生成文件类型-->  
  35.                 <fileType>HTML</fileType>  
  36.                 <!--打开文件输出目录-->  
  37.                 <openOutputDir>false</openOutputDir> 
  38.                  <!--生成模板-->  
  39.                 <produceType>freemarker</produceType>  
  40.                 <!--文档名称 为空时:将采用[数据库名称-描述-版本号]作为文档名称-->  
  41.                 <!--<docName>测试文档名称</docName>-->  
  42.                 <!--描述-->  
  43.                 <description>数据库文档生成</description>  
  44.                 <!--版本-->  
  45.                 <version>${project.version}</version>  
  46.                 <!--标题-->  
  47.                 <title>fire数据库文档</title>  
  48.             </configuration>  
  49.             <executions>  
  50.                 <execution>  
  51.                     <phase>compile</phase>  
  52.                     <goals>  
  53.                         <goal>run</goal>  
  54.                     </goals>  
  55.                 </execution>  
  56.             </executions>  
  57.         </plugin>  
  58.     </plugins>  
  59. </build> 

配置完以后在 maven project->screw 双击执行ok。

运行方式

代码生成方式也非常简单。 

  1. @SpringBootTest  
  2. public class ScrewApplicationTests {  
  3.     @Autowired  
  4.     ApplicationContext applicationContext;  
  5.     @Test  
  6.     void contextLoads() {  
  7.         DataSource dataSourceMysql = applicationContext.getBean(DataSource.class);  
  8.         // 生成文件配置  
  9.         EngineConfig engineConfig = EngineConfig.builder()  
  10.                 // 生成文件路径,自己mac本地的地址,这里需要自己更换下路径  
  11.                 .fileOutputDir("D:/")  
  12.                 // 打开目录  
  13.                 .openOutputDir(false) 
  14.                  // 文件类型  
  15.                 .fileType(EngineFileType.HTML)  
  16.                 // 生成模板实现  
  17.                 .produceType(EngineTemplateType.freemarker).build();  
  18.         // 生成文档配置(包含以下自定义版本号、描述等配置连接)  
  19.         Configuration config = Configuration.builder()  
  20.                 .version("1.0.3")  
  21.                 .description("生成文档信息描述")  
  22.                 .dataSource(dataSourceMysql)  
  23.                 .engineConfig(engineConfig)  
  24.                 .produceConfig(getProcessConfig())  
  25.                 .build();  
  26.         // 执行生成  
  27.         new DocumentationExecute(config).execute();  
  28.     }  
  29.     /** 
  30.       * 配置想要生成的表+ 配置想要忽略的表  
  31.      *  
  32.      * @return 生成表配置  
  33.      */  
  34.     public static ProcessConfig getProcessConfig() {  
  35.         // 忽略表名  
  36.         List<String> ignoreTableName = Arrays.asList("a", "test_group");  
  37.         // 忽略表前缀,如忽略a开头的数据库表  
  38.         List<String> ignorePrefix = Arrays.asList("a", "t");  
  39.         // 忽略表后缀  
  40.         List<String> ignoreSuffix = Arrays.asList("_test", "czb_");  
  41.         return ProcessConfig.builder()  
  42.                 //根据名称指定表生成  
  43.                 .designatedTableName(Arrays.asList("fire_user"))  
  44.                 //根据表前缀生成  
  45.                 .designatedTablePrefix(new ArrayList<>())  
  46.                 //根据表后缀生成  
  47.                 .designatedTableSuffix(new ArrayList<>())  
  48.                 //忽略表名  
  49.                 .ignoreTableName(ignoreTableName)  
  50.                 //忽略表前缀 
  51.                  .ignoreTablePrefix(ignorePrefix)  
  52.                 //忽略表后缀  
  53.                 .ignoreTableSuffix(ignoreSuffix).build();  
  54.     }  

4、文档格式

screw 有 HTML、DOC、MD 三种格式的文档。

代码中的修改 

  1. .fileType(EngineFileType.HTML) 

或者pom文件 

  1. <fileType>MD</fileType> 

DOC文档样式

DOC文档

HTML文档样式

HTML文档

MD文档样式

MD文档 

 

责任编辑:庞桂玉 来源: Hollis
相关推荐

2020-12-24 10:20:43

文档工具语言

2010-05-07 14:29:45

Unix--Tripw

2021-05-10 09:22:44

.NET数据库项目

2016-08-23 13:35:22

MVCEFNuGet

2011-05-13 13:54:02

数据库文档数据库

2021-06-30 22:03:05

数据库交付设计

2011-08-22 16:08:46

IOS开发数据库

2023-03-29 07:02:46

开源项目工具

2019-05-21 22:56:08

阿里云数据库PolarDB

2024-03-13 07:26:23

2023-09-13 06:59:07

2011-08-10 15:46:29

数据库

2013-11-29 09:58:27

巨彬软件NoSQL文档型数据库

2011-05-13 09:42:21

2010-04-14 17:29:33

Oracle数据库

2009-05-14 14:23:25

微软ado.netLINQ

2010-04-15 15:06:19

Oracle数据库

2022-11-14 18:23:06

亚马逊

2011-03-04 09:40:42

AJAX开发集成数据库

2015-10-22 10:52:34

NoSQL数据库键值型数据库文档型数据库
点赞
收藏

51CTO技术栈公众号