如何生成数据库设计文档
- screw
- 什么是screw
- 特点
- 支持生成的文档类型
- 目前支持的数据库类型
- 支持的模板类型
- 如何使用?
- 遇到的问题
screw
官网地址:
https://gitee.com/leshalv/screw/
什么是screw
screw是简洁好用的数据库表结构文档生成工具。
特点
- 简洁、轻量、设计良好
- 多数据库支持
- 多种格式文档
- 灵活扩展
- 支持自定义模板
支持生成的文档类型
- html
- word
- markdown
目前支持的数据库类型
MySQL
MariaDB
TIDB
Oracle
SqlServer
PostgreSQL
Cache DB(2016)
支持的模板类型
- freemarker
- velocity
如何使用?
- 引入maven依赖
<dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.3</version>
</dependency>
- 编写代码
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.security.MessageDigest;
import java.util.Arrays;
import java.util.List;
import java.util.Random;public class Test {public static void main(String[] args) {// 数据源HikariConfig hikariConfig = new HikariConfig();hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");hikariConfig.setJdbcUrl("jdbc:mysql://192.168.200.222:3306/bjs?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true");hikariConfig.setUsername("root");hikariConfig.setPassword("root");// 设置可以获取tables remarks信息hikariConfig.addDataSourceProperty("useInformationSchema", "true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);DataSource dataSource = new HikariDataSource(hikariConfig);// 1、生成文件配置EngineConfig engineConfig = EngineConfig.builder()// 生成文件路径.fileOutputDir("E:\\北交所")// 打开目录.openOutputDir(false)// 文件类型.fileType(EngineFileType.HTML)// 生成模板实现.produceType(EngineTemplateType.freemarker).build();// 忽略表名List<String> ignoreTableName = Arrays.asList("test");// 忽略表前缀List<String> ignorePrefix = Arrays.asList("test_", "test");// 忽略表后缀List<String> ignoreSuffix = Arrays.asList("_test", "test");// 2、配置想要忽略的表ProcessConfig processConfig = ProcessConfig.builder().ignoreTableName(ignoreTableName).ignoreTablePrefix(ignorePrefix).ignoreTableSuffix(ignoreSuffix).build();// 3、生成文档配置(包含以下自定义版本号、描述等配置连接)Configuration config = Configuration.builder().version("1.0.0").description("数据库文档").dataSource(dataSource).engineConfig(engineConfig).produceConfig(processConfig).build();// 4、执行生成new DocumentationExecute(config).execute();}}
- 生成文档(我生成的是Html,以下是截图)
遇到的问题
运行测试类,报下图的错误,错误信息是Jar包冲突,依赖screw后与项目原来依赖的jar包冲突了。
解决办法:排除冲突的依赖
<!-- screw核心 --><dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.3</version><exclusions><exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId></exclusion></exclusions></dependency>