学习使用背景:
作为一个开发人员,很多时候我们的数据库设计需要提供给甲方,因此掌握一门能够导出的技术显得很有必要。之前,系统的数据库用的都是mysql,同事之间可以推荐使用dbchm这个工具,很实用也很便捷。坑爹的是,这次系统使用的是oracle数据库,上述的有点不兼容,不太能使用。
第二天甲方就要要文档,总不能一个一个去弄吧。
Screw-数据库表结构文档生成器:
1配置pom.xml
<!-- screw核心 -->
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.3</version>
</dependency>
<!-- oracle驱动-->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.1.0.0</version>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2编写测试工具类
package com.example.demo;
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.Arrays;
import java.util.List;
/**
* @Author smallhou
* @Date 2022-06-02 09:20
* @Version V1.0
*/
public class Test {
public static void main(String[] args) {
// 数据源
HikariConfig hikariConfig = new HikariConfig();
//mysql
//hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");
//hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/dbaname");
//oracle
hikariConfig.setDriverClassName("oracle.jdbc.driver.OracleDriver");
hikariConfig.setJdbcUrl("jdbc:oracle:thin:@//127.0.0.1:1521/dbaname");
hikariConfig.setUsername("root);
hikariConfig.setPassword("123456");
// 设置可以获取tables remarks信息
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
DataSource dataSource = new HikariDataSource(hikariConfig);
// 1、生成文件配置
EngineConfig engineConfig = EngineConfig.builder()
// 生成文件路径
.fileOutputDir("/Users/jianchenghou/uploadjar")//windows需要写盘符,我的是mac就省略了
//.fileOutputDir("C:\\Users\\jianchenghou\\")//windows
// 打开目录
.openOutputDir(false)
// 文件类型
.fileType(EngineFileType.WORD)
// 生成模板实现
.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();
//我这里就不配置了
ProcessConfig processConfig = ProcessConfig.builder().build();
// 3、生成文档配置(包含以下自定义版本号、描述等配置连接)
Configuration config = Configuration.builder().version("1.0.0").description("数据库文档").dataSource(dataSource)
.engineConfig(engineConfig).produceConfig(processConfig).build();
// 4、执行生成
new DocumentationExecute(config).execute();
}
}
3直接启动测试类的main方法;会在你写的文件路径下生成相应的文档(自己设置格式,我这里简单的导出了word/html)
4导出文件
word:
html:
5总体感觉:样式非常整齐,速度生成的也很快,集成速度更快。非常适合我们生成数据库文档。毕竟能自己调试的项目,可控。。。。。