在项目中,我们经常需要整理数据库表结构文档。
一般情况下,我们都是手动整理数据库表结构文档,当表结构有变动的时候,自己手动进行维护。
数据库表少的时候还好,数据库表多了之后,手动整理和维护数据库表结构文档简直不要太麻烦,而且,还非常容易出错!
有没有什么好用的工具帮助我们自动生成数据库表结构文档呢?
当然有!Github 上就有一位朋友开源了一款数据库表结构文档自动生成工具—— screw 。
项目地址:https://github.com/pingfangushi/screw 。
快速入门 基于Java代码我们只需要创建要给maven项目即可!然后引入相关依赖。
cn.smallbun.screw screw-core 1.0.5 com.zaxxer HikariCP 3.4.5 mysql mysql-connector-java 8.0.20
编写相关代码,代码很简单,总共分为五个步骤,以下为全部代码。
public class ScrewMain {
public static void main(String[] args) {
// 1.获取数据源
DataSource dataSource = getDataSource();
// 2.获取数据库文档生成配置(文件路径、文件类型)
EngineConfig engineConfig = getEngineConfig();
// 3.获取数据库表的处理配置,可忽略
ProcessConfig processConfig = getProcessConfig();
// 4.Screw 完整配置
Configuration config = getScrewConfig(dataSource, engineConfig, processConfig);
// 5.执行生成数据库文档
new documentationExecute(config).execute();
}
private static DataSource getDataSource() {
//数据源
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/seata?serverTimezone=GMT%2B8");
hikariConfig.setUsername("root");
hikariConfig.setPassword("123456");
//设置可以获取tables remarks信息
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
return new HikariDataSource(hikariConfig);
}
private static EngineConfig getEngineConfig() {
//生成配置
return EngineConfig.builder()
//生成文件路径
.fileOutputDir("D:\cc\code\screw-demo\doc")
//打开目录
.openOutputDir(true)
//文件类型
.fileType(EngineFileType.HTML)
//生成模板实现
.produceType(EngineTemplateType.freemarker)
//自定义文件名称
.fileName("数据库结构文档").build();
}
private static ProcessConfig getProcessConfig() {
return ProcessConfig.builder()
// 指定只生成 blog 表
.designatedTableName(new ArrayList<>(Collections.singletonList("blog")))
.build();
}
private static ProcessConfig getProcessConfig1() {
ArrayList ignoreTableName = new ArrayList<>();
ignoreTableName.add("test_user");
ignoreTableName.add("test_group");
ArrayList ignorePrefix = new ArrayList<>();
ignorePrefix.add("test_");
ArrayList ignoreSuffix = new ArrayList<>();
ignoreSuffix.add("_test");
return ProcessConfig.builder()
//忽略表名
.ignoreTableName(ignoreTableName)
//忽略表前缀
.ignoreTablePrefix(ignorePrefix)
//忽略表后缀
.ignoreTableSuffix(ignoreSuffix)
.build();
}
private static Configuration getScrewConfig(DataSource dataSource, EngineConfig engineConfig, ProcessConfig processConfig) {
return Configuration.builder()
//版本
.version("1.0.0")
//描述
.description("数据库设计文档生成")
//数据源
.dataSource(dataSource)
//生成配置
.engineConfig(engineConfig)
//生成配置
.produceConfig(processConfig)
.build();
}
}
直接运行代码即可生成我们需要的数据库文档。生成的文件还是很美观的啦~
除了基于 Java 代码这种方式之外,你还可以通过 screw 提供的 Maven 插件来生成数据库文档。方法也非常简单!
我们只需要在pom文件中配置相关插件即可。你仅仅需要修改你的数据库信息。
cn.smallbun.screw screw-maven-plugin 1.0.5 com.zaxxer HikariCP 3.4.5 mysql mysql-connector-java 8.0.20 root 123456 com.mysql.cj.jdbc.Driver jdbc:mysql://127.0.0.1:3306/seata?serverTimezone=GMT%2B8 MD true freemarker 数据库结构文档 数据库设计文档生成 ${project.version} 数据库文档 compile run
配置好插件后,我们只需要执行即可生成文档。



