|
|
51CTO旗下网站
|
|
移动端

还在手动整理数据库文档?试试这个工具

在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐。

作者:冷冷来源:JAVA架构日记|2020-07-29 10:55

 

简介

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

screw 特点

  • 简洁、轻量、设计良好。不需要 powerdesigner 这种重量的建模工具
  • 多数据库支持 。支持市面常见的数据库类型 MySQL、Oracle、SqlServer
  • 多种格式文档。支持 MD、HTML、WORD 格式
  • 灵活扩展。支持用户自定义模板和展示样式

支持数据库类型

  • [✔️] MySQL
  • [✔️] MariaDB
  • [✔️] TIDB
  • [✔️] Oracle
  • [✔️] SqlServer
  • [✔️] PostgreSQL
  • [✔️] Cache DB

依赖

这里以 mysql8 数据库为例子

  1. <!--数据库文档核心依赖--> 
  2.  <dependency> 
  3.      <groupId>cn.smallbun.screw</groupId> 
  4.      <artifactId>screw-core</artifactId> 
  5.      <version>1.0.2</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> 

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

  1. @Test 
  2. public void shouldAnswerWithTrue() { 
  3.     //数据源 
  4.     HikariConfig hikariConfig = new HikariConfig(); 
  5.     hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver"); 
  6.     hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test"); 
  7.     hikariConfig.setUsername("root"); 
  8.     hikariConfig.setPassword("root"); 
  9.     //设置可以获取tables remarks信息 
  10.     hikariConfig.addDataSourceProperty("useInformationSchema""true"); 
  11.     hikariConfig.setMinimumIdle(2); 
  12.     hikariConfig.setMaximumPoolSize(5); 
  13.     DataSource dataSource = new HikariDataSource(hikariConfig); 
  14.     //生成配置 
  15.     EngineConfig engineConfig = EngineConfig.builder() 
  16.             //生成文件路径 
  17.             .fileOutputDir("/Users/lengleng"
  18.             //打开目录 
  19.             .openOutputDir(true
  20.             //文件类型 
  21.             .fileType(EngineFileType.HTML) 
  22.             //生成模板实现 
  23.             .produceType(EngineTemplateType.freemarker).build(); 
  24.  
  25.     //忽略表 
  26.     ArrayList<String> ignoreTableName = new ArrayList<>(); 
  27.     ignoreTableName.add("test_user"); 
  28.     ignoreTableName.add("test_group"); 
  29.     //忽略表前缀 
  30.     ArrayList<String> ignorePrefix = new ArrayList<>(); 
  31.     ignorePrefix.add("test_"); 
  32.     //忽略表后缀 
  33.     ArrayList<String> ignoreSuffix = new ArrayList<>(); 
  34.     ignoreSuffix.add("_test"); 
  35.     ProcessConfig processConfig = ProcessConfig.builder() 
  36.             //忽略表名 
  37.             .ignoreTableName(ignoreTableName) 
  38.             //忽略表前缀 
  39.             .ignoreTablePrefix(ignorePrefix) 
  40.             //忽略表后缀 
  41.             .ignoreTableSuffix(ignoreSuffix).build(); 
  42.     //配置 
  43.     Configuration config = Configuration.builder() 
  44.             //版本 
  45.             .version("1.0.0"
  46.             //描述 
  47.             .description("数据库设计文档生成"
  48.             //数据源 
  49.             .dataSource(dataSource) 
  50.             //生成配置 
  51.             .engineConfig(engineConfig) 
  52.             //生成配置 
  53.             .produceConfig(processConfig).build(); 
  54.     //执行生成 
  55.     new DocumentationExecute(config).execute(); 

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

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

【编辑推荐】

  1. 你了解世界上功能最强大的开源数据库吗?
  2. 用于数据分析的8个SQL技术
  3. 新来的实习生把数据库搞炸了......
  4. 6个MySQL GUI工具,数据库管理必备
  5. 为什么我不喜欢数据库三范式?
【责任编辑:华轩 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

大数据安全运维实战

大数据安全运维实战

CDH+Ambari
共20章 | 大数据陈浩

91人订阅学习

实操案例:Jenkins持续交付和持续部署

实操案例:Jenkins持续交付和持续部署

微服务架构下的自动化部署
共18章 | freshman411

187人订阅学习

思科交换网络安全指南

思科交换网络安全指南

安全才能无忧
共5章 | 思科小牛

110人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微