程序员

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

作者:admin 2021-05-07 我要评论

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

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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

为了不重复 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文档


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/nPwFV7DN8Ogg54_crLlP3g

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 【20210405】读研规划(更新ing)

    【20210405】读研规划(更新ing)

  • 操作系统学习笔记----内存管理

    操作系统学习笔记----内存管理

  • Mallet算法及滤波器

    Mallet算法及滤波器

  • 剑指offer24:链表的反转

    剑指offer24:链表的反转

腾讯云代理商
海外云服务器