当前位置:Gxlcms > 数据库问题 > 实用!一键生成数据库文档,堪称数据库界的Swagger

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

时间:2021-07-01 10:21:17 帮助过:29人阅读

本文收录在个人博客:www.chengxy-nds.top,技术资料共享,同进步

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

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

一、数据库支持

  • [x] MySQL
  • [x] MariaDB
  • [x] TIDB
  • [x] Oracle
  • [x] SqlServer
  • [x] PostgreSQL
  • [x] Cache DB

二、配置

1、pom文件

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

  1. <code class="language-javascript"><!-- 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></code>

2、配置数据源

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

  1. <code class="language-javascript">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</code>

3、screw 核心配置

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

  1. <code class="language-javascript"> <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></code>

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

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

  1. <code class="language-javascript">@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. }
  55. }</code>

4、文档格式

screwHTMLDOCMD 三种格式的文档。

代码中的修改

  1. <code class="language-javascript">.fileType(EngineFileType.HTML)</code>

或者pom文件

  1. <code class="language-javascript"><fileType>MD</fileType></code>

DOC文档样式
技术图片
HTML文档样式
技术图片
MD文档样式
技术图片
不得不说这个工具是真TM好用,提前完成任务,有点傲娇有木有!
技术图片

原创不易,燃烧秀发输出内容,如果有一丢丢收获,点个赞鼓励一下吧!

整理了几百本各类技术电子书,送给小伙伴们。关注公号回复【666】自行领取。

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

标签:sql   open   lock   好用   fir   acl   follow   pom   不重复   

人气教程排行