简介
在项目开发和交付阶段,数据库文档是必不可少的。对于大型项目多个数据库几百甚至几千张表来说,手写数据库文档必然是耗时且痛苦的。因此需要一个插件自动生成文档。
screw
提供了多种文件类型和多种模板的自动生成工具,上手简单且效果不错。
特点
1)简洁、轻量、设计良好
2)多数据库支持
3)多种格式文档
4)灵活扩展
5)支持自定义模板
支持数据库类型
MySQL | Oracle | SqlServer | MariaDB |
TIDB | PostgreSQL | Cache DB |
生成文档
html | word | markdown |
1 配置 pom 文件
引入screw
核心包,HikariCP
数据库连接池,HikariCP
号称性能最出色的数据库连接池。
<!-- 依赖项定义 -->
<dependencies>
<!-- 一键生成数据库文档 -->
<!-- screw核心 -->
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.5</version>
</dependency>
<!-- HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
<!-- freemarker engine -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<!-- jdbc driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
<scope>runtime</scope>
</dependency>
<!-- test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
2 自动生成代码
package 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 org.junit.Test;
import javax.sql.DataSource;
import java.util.ArrayList;
public class ScrewUtil {
@Test
public void ScrewUtil() {
//构建数据源
HikariConfig hikariConfig = new HikariConfig();
//指定数据库驱动
hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");
hikariConfig.setJdbcUrl("jdbc:mysql://192.168.3.1:3306/secretary");
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://")
//是否打开文件夹
.openOutputDir(true)
//文件类型:html、doc、markdown
.fileType(EngineFileType.HTML)
//模板引擎:生成模板
.produceType(EngineTemplateType.freemarker).build();
//忽略表
//第一种:直接填表名
ArrayList<String> ignoreTableName = new ArrayList<String>();
ignoreTableName.add("sys_user");
//第二种:忽略表前缀
ArrayList<String> ignorePrefix = new ArrayList<String>();
ignorePrefix.add("test_");
//第三种:忽略表后缀
ArrayList<String> ignoreSuffix = new ArrayList<String>();
ignoreSuffix.add("_test");
ProcessConfig processConfig = ProcessConfig.builder()
//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
//根据名称指定表生成
.designatedTableName(new ArrayList<String>())
//根据表前缀生成
.designatedTablePrefix(new ArrayList<String>())
//根据表后缀生成
.designatedTableSuffix(new ArrayList<String>())
//忽略表名
.ignoreTableName(ignoreTableName)
//忽略表前缀
.ignoreTablePrefix(ignorePrefix)
//忽略表后缀
.ignoreTableSuffix(ignoreSuffix).build();
//设置生成pojo相关配置
Configuration config = Configuration.builder()
//版本
.version("1.0.0")
//描述,文档名称
.description("数据库设计文档")
//数据源
.dataSource(dataSource)
//生成配置
.engineConfig(engineConfig)
//生成配置
.produceConfig(processConfig).build();
//换行生成
new DocumentationExecute(config).execute();
}
}