最近因为一个二手项目没有数据文档困扰不堪,顾而寻找到一个神器screw来生成数据库表结构设计。
亲测数据库支持如下
- MySQL
- MariaDB
- TIDB
- Oracle
- SqlServer
- PostgreSQL
- Cache DB
- 可能还有其它吼
pom文件需要引入如下包
<!-- 数据库文档生成-->
<!-- screw核心 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
<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>
java 代码如下 注:HikariCP是一个连接池
package com.tgcw.scm.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;
import java.util.Arrays;
import java.util.List;
/**
* @Title: demo
* @Description:
* @author: liaryank
* @Date: 2020/11/11 3:45 下午
* @Version: 1.0
*/
public class Generation {
public static void main(String[] args) {
//数据源
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("org.postgresql.Driver");
hikariConfig.setJdbcUrl("jdbc:postgresql://127.0.0.1:11432/scma_dev");
hikariConfig.setUsername("scma_dev");
hikariConfig.setPassword("123456");
//设置可以获取tables remarks信息
hikariConfig.setSchema("scma_dev");//设置想要导出的schema
hikariConfig.addDataSourceProperty("scma_dev", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
DataSource dataSource = new HikariDataSource(hikariConfig);
EngineConfig engineConfig = EngineConfig.builder()
//导出文件地址
.fileOutputDir("/Users/mypro/IdeaProjects")
//是否打开文件夹
.openOutputDir(true)
//文件类型:html、doc、mockdown
.fileType(EngineFileType.WORD)
//模板引擎
.produceType(EngineTemplateType.freemarker).build();
// ProcessConfig processConfig = ProcessConfig.builder()
// //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
// //根据名称指定表生成
// .designatedTableName(new ArrayList<>())
// //根据表前缀生成
// .designatedTablePrefix(new ArrayList<>())
// //根据表后缀生成
// .designatedTableSuffix(new ArrayList<>()).build();
//设置生成pojo相关配置
Configuration config = Configuration.builder()
.version("1.0.0")
.description("数据库设计文档")
.dataSource(dataSource)
.engineConfig(engineConfig)
.produceConfig(getProcessConfig()).build();
new DocumentationExecute(config).execute();
}
/**
* 配置想要生成的表+ 配置想要忽略的表
*
* @return 生成表配置
*/
public static ProcessConfig getProcessConfig() {
// 忽略表名
List<String> ignoreTableName = Arrays.asList();
// 忽略表前缀,如忽略a开头的数据库表
List<String> ignorePrefix = Arrays.asList();
// 忽略表后缀
List<String> ignoreSuffix = Arrays.asList();
return ProcessConfig.builder()
//根据名称指定表生成
// .designatedTableName(Arrays.asList("user"))
//根据表前缀生成("a")
.designatedTablePrefix(new ArrayList<>())
//根据表后缀生成("_user")
.designatedTableSuffix(new ArrayList<>())
//忽略表名
.ignoreTableName(ignoreTableName)
//忽略表前缀
.ignoreTablePrefix(ignorePrefix)
//忽略表后缀
.ignoreTableSuffix(ignoreSuffix).build();
}
}
执行即可
可生成html、word、markdown文件
效果图如下这个是html
word
OK 是不是非常nice!