1、官方源码地址

https://gitee.com/leshalv/screw#%E7%AE%80%E4%BB%8B

2、支持数据库和 导出的文档格式

image.png

3、使用

方式一:利用maven插件

1)pom.xml 引入核心依赖

  1. <dependency>
  2. <groupId>cn.smallbun.screw</groupId>
  3. <artifactId>screw-core</artifactId>
  4. <version>1.0.3</version>
  5. </dependency>
  6. <!-- HikariCP 数据库连接池-->
  7. <dependency>
  8. <groupId>com.zaxxer</groupId>
  9. <artifactId>HikariCP</artifactId>
  10. <version>3.4.5</version>
  11. </dependency>
  12. <!--mysql driver-->
  13. <dependency>
  14. <groupId>mysql</groupId>
  15. <artifactId>mysql-connector-java</artifactId>
  16. <version>5.1.37</version>
  17. </dependency>

2)pom.xml 配置 maven 插件

缺点:没有找到指定生成表 和 生成文档路径的 设定
其中:

  • mysql-connector-java 版本根据所连接的数据库版本自行修改
  • mysql 6以上驱动为:com.mysql.cj.jdbc.Driver

mysql 6以下驱动为:com.mysql.jdbc.Driver
根据数据库版本自行修改

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>cn.smallbun.screw</groupId>
  5. <artifactId>screw-maven-plugin</artifactId>
  6. <version>1.0.3</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>5.1.37</version>
  19. </dependency>
  20. </dependencies>
  21. <configuration>
  22. <!--username-->
  23. <username>root</username>
  24. <!--password-->
  25. <password>123456</password>
  26. <!--driver-->
  27. <driverClassName>com.mysql.jdbc.Driver</driverClassName>
  28. <!--jdbc url-->
  29. <jdbcUrl>jdbc:mysql://127.0.0.1:3306/w_report_irr_dev</jdbcUrl>
  30. <!--生成文件类型-->
  31. <fileType>HTML</fileType>
  32. <!--打开文件输出目录-->
  33. <openOutputDir>false</openOutputDir>
  34. <!--生成模板-->
  35. <produceType>freemarker</produceType>
  36. <!--文档名称 为空时:将采用[数据库名称-描述-版本号]作为文档名称-->
  37. <fileName>测试文档名称</fileName>
  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>

3)双击 run,生成文档

image.png

4)生成文档位置 及 文档预览

image.png
image.png

方式二:利用工具类

优点:可以自行设定指定表、指定前缀、指定后缀、忽略表、忽略前缀、忽略后缀 等自定义设定
缺点:如果指定表很多,ArrayList designTableName 要手动 一个个 add加进去,不太友好,
如果是统一前缀、后缀 还好,所以以后建表尽量统一前缀
1)写工具类

  1. package com.ruyuan.little.project.spring.utils;
  2. import cn.smallbun.screw.core.Configuration;
  3. import cn.smallbun.screw.core.engine.EngineConfig;
  4. import cn.smallbun.screw.core.engine.EngineFileType;
  5. import cn.smallbun.screw.core.engine.EngineTemplateType;
  6. import cn.smallbun.screw.core.execute.DocumentationExecute;
  7. import cn.smallbun.screw.core.process.ProcessConfig;
  8. import com.zaxxer.hikari.HikariConfig;
  9. import com.zaxxer.hikari.HikariDataSource;
  10. import javax.sql.DataSource;
  11. import java.util.ArrayList;
  12. /**
  13. * 生成数据库文档
  14. *
  15. * @author wmn
  16. * @date 2021/8/10
  17. */
  18. public class GenerateSqlFileUtils {
  19. /**
  20. * 文档生成
  21. */
  22. public static void documentGeneration() {
  23. //数据源
  24. HikariConfig hikariConfig = new HikariConfig();
  25. //mysql 6以上驱动为:<driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
  26. // mysql 6以下驱动为:<driverClassName>com.mysql.jdbc.Driver</driverClassName>
  27. hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");
  28. hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/w_report_irr_dev");
  29. hikariConfig.setUsername("root");
  30. hikariConfig.setPassword("123456");
  31. //设置可以获取tables remarks信息
  32. hikariConfig.addDataSourceProperty("useInformationSchema", "true");
  33. hikariConfig.setMinimumIdle(2);
  34. hikariConfig.setMaximumPoolSize(5);
  35. DataSource dataSource = new HikariDataSource(hikariConfig);
  36. //生成配置
  37. EngineConfig engineConfig = EngineConfig.builder()
  38. //生成文件路径
  39. .fileOutputDir("E:\\learnWorkspace\\little-project-spring-week02\\doc")
  40. //打开目录
  41. .openOutputDir(true)
  42. //文件类型
  43. .fileType(EngineFileType.HTML)
  44. //生成模板实现
  45. .produceType(EngineTemplateType.freemarker)
  46. //自定义文件名称
  47. .fileName("20210810_test_生成数据库文档测试").build();
  48. //指定表
  49. ArrayList<String> designTableName = new ArrayList<>();
  50. designTableName.add("design_table");
  51. //忽略表
  52. ArrayList<String> ignoreTableName = new ArrayList<>();
  53. ignoreTableName.add("test_user");
  54. ignoreTableName.add("test_group");
  55. //忽略表前缀
  56. ArrayList<String> ignorePrefix = new ArrayList<>();
  57. ignorePrefix.add("test_");
  58. //忽略表后缀
  59. ArrayList<String> ignoreSuffix = new ArrayList<>();
  60. ignoreSuffix.add("_test");
  61. ProcessConfig processConfig = ProcessConfig.builder()
  62. //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
  63. //根据名称指定表生成
  64. .designatedTableName(designTableName)
  65. //根据表前缀生成
  66. .designatedTablePrefix(new ArrayList<>())
  67. //根据表后缀生成
  68. .designatedTableSuffix(new ArrayList<>())
  69. //忽略表名
  70. .ignoreTableName(ignoreTableName)
  71. //忽略表前缀
  72. .ignoreTablePrefix(ignorePrefix)
  73. //忽略表后缀
  74. .ignoreTableSuffix(ignoreSuffix).build();
  75. //配置
  76. Configuration config = Configuration.builder()
  77. //版本
  78. .version("1.0.0")
  79. //描述
  80. .description("数据库设计文档生成")
  81. //数据源
  82. .dataSource(dataSource)
  83. //生成配置
  84. .engineConfig(engineConfig)
  85. //生成配置
  86. .produceConfig(processConfig)
  87. .build();
  88. //执行生成
  89. new DocumentationExecute(config).execute();
  90. }
  91. public static void main(String[] args) {
  92. documentGeneration();
  93. }
  94. }

2)main运行即可
image.png
image.png
image.png