1、官方源码地址
https://gitee.com/leshalv/screw#%E7%AE%80%E4%BB%8B
2、支持数据库和 导出的文档格式
3、使用
方式一:利用maven插件
1)pom.xml 引入核心依赖
<dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.3</version></dependency><!-- HikariCP 数据库连接池--><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>3.4.5</version></dependency><!--mysql driver--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.37</version></dependency>
2)pom.xml 配置 maven 插件
缺点:没有找到指定生成表 和 生成文档路径的 设定
其中:
- mysql-connector-java 版本根据所连接的数据库版本自行修改
- mysql 6以上驱动为:
com.mysql.cj.jdbc.Driver
mysql 6以下驱动为:
根据数据库版本自行修改
<build><plugins><plugin><groupId>cn.smallbun.screw</groupId><artifactId>screw-maven-plugin</artifactId><version>1.0.3</version><dependencies><!-- HikariCP --><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>3.4.5</version></dependency><!--mysql driver--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.37</version></dependency></dependencies><configuration><!--username--><username>root</username><!--password--><password>123456</password><!--driver--><driverClassName>com.mysql.jdbc.Driver</driverClassName><!--jdbc url--><jdbcUrl>jdbc:mysql://127.0.0.1:3306/w_report_irr_dev</jdbcUrl><!--生成文件类型--><fileType>HTML</fileType><!--打开文件输出目录--><openOutputDir>false</openOutputDir><!--生成模板--><produceType>freemarker</produceType><!--文档名称 为空时:将采用[数据库名称-描述-版本号]作为文档名称--><fileName>测试文档名称</fileName><!--描述--><description>数据库文档生成</description><!--版本--><version>${project.version}</version><!--标题--><title>数据库文档</title></configuration><executions><execution><phase>compile</phase><goals><goal>run</goal></goals></execution></executions></plugin></plugins></build>
3)双击 run,生成文档
4)生成文档位置 及 文档预览
方式二:利用工具类
优点:可以自行设定指定表、指定前缀、指定后缀、忽略表、忽略前缀、忽略后缀 等自定义设定
缺点:如果指定表很多,ArrayList
如果是统一前缀、后缀 还好,所以以后建表尽量统一前缀
1)写工具类
package com.ruyuan.little.project.spring.utils;import cn.smallbun.screw.core.Configuration;import cn.smallbun.screw.core.engine.EngineConfig;import cn.smallbun.screw.core.engine.EngineFileType;import cn.smallbun.screw.core.engine.EngineTemplateType;import cn.smallbun.screw.core.execute.DocumentationExecute;import cn.smallbun.screw.core.process.ProcessConfig;import com.zaxxer.hikari.HikariConfig;import com.zaxxer.hikari.HikariDataSource;import javax.sql.DataSource;import java.util.ArrayList;/*** 生成数据库文档** @author wmn* @date 2021/8/10*/public class GenerateSqlFileUtils {/*** 文档生成*/public static void documentGeneration() {//数据源HikariConfig hikariConfig = new HikariConfig();//mysql 6以上驱动为:<driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>// mysql 6以下驱动为:<driverClassName>com.mysql.jdbc.Driver</driverClassName>hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/w_report_irr_dev");hikariConfig.setUsername("root");hikariConfig.setPassword("123456");//设置可以获取tables remarks信息hikariConfig.addDataSourceProperty("useInformationSchema", "true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);DataSource dataSource = new HikariDataSource(hikariConfig);//生成配置EngineConfig engineConfig = EngineConfig.builder()//生成文件路径.fileOutputDir("E:\\learnWorkspace\\little-project-spring-week02\\doc")//打开目录.openOutputDir(true)//文件类型.fileType(EngineFileType.HTML)//生成模板实现.produceType(EngineTemplateType.freemarker)//自定义文件名称.fileName("20210810_test_生成数据库文档测试").build();//指定表ArrayList<String> designTableName = new ArrayList<>();designTableName.add("design_table");//忽略表ArrayList<String> ignoreTableName = new ArrayList<>();ignoreTableName.add("test_user");ignoreTableName.add("test_group");//忽略表前缀ArrayList<String> ignorePrefix = new ArrayList<>();ignorePrefix.add("test_");//忽略表后缀ArrayList<String> ignoreSuffix = new ArrayList<>();ignoreSuffix.add("_test");ProcessConfig processConfig = ProcessConfig.builder()//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置//根据名称指定表生成.designatedTableName(designTableName)//根据表前缀生成.designatedTablePrefix(new ArrayList<>())//根据表后缀生成.designatedTableSuffix(new ArrayList<>())//忽略表名.ignoreTableName(ignoreTableName)//忽略表前缀.ignoreTablePrefix(ignorePrefix)//忽略表后缀.ignoreTableSuffix(ignoreSuffix).build();//配置Configuration config = Configuration.builder()//版本.version("1.0.0")//描述.description("数据库设计文档生成")//数据源.dataSource(dataSource)//生成配置.engineConfig(engineConfig)//生成配置.produceConfig(processConfig).build();//执行生成new DocumentationExecute(config).execute();}public static void main(String[] args) {documentGeneration();}}
2)main运行即可



