一、解决什么问题
数据库文档是咱们在企业我的项目开发中须要交付的文档,通常须要开发人员去手工编写。编写实现后,数据库产生变更又须要手动的进行批改, 从而节约了大量的人力。并且这种文档并没有什么技术含量,被安顿做这个工作的程序员往往本人心里会有抵触情绪,乐观的预期本人在团队的地位,造成到职也是可能的。如上面的这种文档的内容:
笔者最近在 github 下面发现一个数据库文档生成工具:screw(螺丝钉)。该工具可能通过简略地配置,疾速的依据数据库表构造进行逆向工程,将数据库表构造及字段逆向生成为文档。
二、特点
- 简洁、轻量、设计良好
- 多数据库反对:MySQL、MariaDB、TIDB、Oracle、SqlServer、PostgreSQL、Cache DB
- 多种格局文档: html、word、markdwon
- 灵便扩大:反对用户自定义模板和展现款式批改(freemarker 模板)
三、依赖库探索
mvn 地方仓库查看最新版本,将如下的 maven 坐标引入到 Spring Boot 我的项目中去:
<dependency>
<groupId>cn.smallbun.screw</groupId>
<artifactId>screw-core</artifactId>
<version>1.0.3</version>
</dependency>
从 maven 仓库的编译依赖中能够看到,screw-core 其实现依赖了如下的内容。重点关注 freemarker,因为该我的项目是应用 freemarker 作为模板生成文档。
除此之外,screw 应用了 HikariCP 作为数据库连接池,所以:
- 你的 Spring Boot 我的项目须要引入 HikariCP 数据库连接池。
- 依据你的数据库类型及版本,引入正确的 JDBC 驱动
四、开始造作吧
以上的工作都做好之后,咱们就能够来配置文档生成参数了。实现文档生成有两种形式,一种是写代码,一种是应用 maven 插件。
- 我集体还是比拟喜爱应用代码的过后,写一个单元测试用例就能够了,绝对独立,应用形式也灵便。
- 如果放在 pom.xml 的插件配置外面,让本就很简短的 pom.xml 变的更加的简短,不喜爱。
所以 maven 插件的这种形式我就不给大家演示了,间接把上面的代码 Ctrl + C/ V 到你的 src/test/java 目录下。简略的批改配置,运行就能够了
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.jupiter.api.Test;
import javax.sql.DataSource;
import java.util.ArrayList;
public class ScrewTest {
@Test
void testScrew() {
// 数据源
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database");
hikariConfig.setUsername("db-username");
hikariConfig.setPassword("db-password");
// 设置能够获取 tables remarks 信息
hikariConfig.addDataSourceProperty("useInformationSchema", "true");
hikariConfig.setMinimumIdle(2);
hikariConfig.setMaximumPoolSize(5);
DataSource dataSource = new HikariDataSource(hikariConfig);
// 生成配置
EngineConfig engineConfig = EngineConfig.builder()
// 生成文件门路
.fileOutputDir("d://")
// 关上目录
.openOutputDir(true)
// 生成文件类型:HTML
.fileType(EngineFileType.HTML)
// 生成模板实现
.produceType(EngineTemplateType.freemarker)
.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();}
}
在测试用例外面运行下面的代码,就会主动生成数据库文档到 fileOutputDir 配置目录下。
五、成果
欢送关注我的博客,外面有很多精品合集
- 本文转载注明出处(必须带连贯,不能只转文字):字母哥博客。
感觉对您有帮忙的话,帮我点赞、分享!您的反对是我不竭的创作能源!。另外,笔者最近一段时间输入了如下的精品内容,期待您的关注。
- 《手摸手教你学 Spring Boot2.0》
- 《Spring Security-JWT-OAuth2 一本通》
- 《实战前后端拆散 RBAC 权限管理系统》
- 《实战 SpringCloud 微服务从青铜到王者》
- 《VUE 深入浅出系列》