screw 生成数据库表结构文档
screw(螺丝钉)可以帮助我们生成数据库的表结构说明文档,方便开发和生产
比较详细的介绍可去官网 地址:https://gitee.com/leshalv/screw
我接触这个工具的契机呢,是因为客户想要一份我们系统的一份数据够的表结构文档,他自己可以做一些简单的sql查询,由于项目比较老,很多文档都已经丢失了,当然,丢失的文档中就包括数据库的表结构文档。我看了下,系统里的表有很多大概有1000+,。于是就拼命的百度,找偷懒的办法,最后还是让我找到了救命稻草——screw。
使用screw
1.创建一个springboot工程
在创建springboot项目的时候,在选择依赖包的时候可以提前选好我们要生成的数据库所需要的驱动包。比如:mysql Driver 、 oracle Driver
2.引入相关依赖
<!-- 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>
我第一次使用oracle生成文档的时候,报了一个错,没有生成成功。错误信息如下:
cn.smallbun.screw.core.exception.ScrewException: cn.smallbun.screw.core.exception.QueryException: java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK
此时需要在pom文件中再引入一个 orai18n
<dependency>
<groupId>cn.easyproject</groupId>
<artifactId>orai18n</artifactId>
<version>12.1.0.2.0</version>
</dependency>
3.编写代码
在springboot项目中的test中编写即可
//数据源
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database");
hikariConfig.setUsername("root");
hikariConfig.setPassword("password");
//设置可以获取tables remarks信息
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
DataSource dataSource = new HikariDataSource(hikariConfig);
//生成文件路径
String fileOutputDir = "D:\\xx\\xx";
//生成配置
EngineConfig engineConfig = EngineConfig.builder()
//生成文件路径
.fileOutputDir(fileOutputDir)
//打开目录
.openOutputDir(true)
//文件类型 还支持生成 markdown word
.fileType(EngineFileType.HTML)
//生成模板实现
.produceType(EngineTemplateType.freemarker)
//自定义文件名称
.fileName("自定义文件名称").build();
//忽略表
ArrayList<String> ignoreTableName = new ArrayList<>();
ignoreTableName.add("test_user");
ignoreTableName.add("test_group");
//忽略表前缀
ArrayList<String> ignorePrefix = new ArrayList<>();
ignorePrefix.add("test_");
//忽略表后缀
ArrayList<String> ignoreSuffix = new ArrayList<>();
ignoreSuffix.add("_test");
ProcessConfig processConfig = ProcessConfig.builder()
//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
//根据名称指定表生成
.designatedTableName(new ArrayList<>())
//根据表前缀生成
.designatedTablePrefix(new ArrayList<>())
//根据表后缀生成
.designatedTableSuffix(new ArrayList<>())
//忽略表名
.ignoreTableName(ignoreTableName)
//忽略表前缀
.ignoreTablePrefix(ignorePrefix)
//忽略表后缀
.ignoreTableSuffix(ignoreSuffix).build();
//配置
Configuration config = Configuration.builder()
//版本
.version("1.0.0")
//描述
.description("数据库设计文档生成")
//数据源
.dataSource(dataSource)
//生成配置
.engineConfig(engineConfig)
//生成配置
.produceConfig(processConfig)
.build();
//执行生成
new DocumentationExecute(config).execute();
System.out.println("生成文档成功,所在目录:"+fileOutputDir);
完成后运行测试方法,生成成功后,就可以去生成目录查看了。数据库中的表注释和字段注释一定要维护好,否则生成的文档中对应的表说明和字段说明都会是空白。