领导临时要数据库文档怎么办?
很多时候,我们为了着急忙慌赶项目进度,很容易忽略整理文档这件事
某一天,领导心血来潮,要搞一次突击检查, 想看看我们的数据库设计的是否规范, 但他又不想亲自去数据库查验(毕竟这么大领导)
那么,我们该怎么办?
第一种方法:离职,世界那么大,我想去看看(我相信一般人不会这么做)
也许你可以试试下面这种方法
此方法大概属于奇技淫巧,建议在工作中多用
基本思路就是通过Java代码自动生成数据库表结构文档
在Java中正好有个包可以实现这个功能
- POM文件引入相关包
...
<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.3</version>
</dependency>
- 配置数据库
spring:
datasource:
url: jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
username: root
password: xxx
driver-class-name: com.mysql.cj.jdbc.Driver
- 编写转换代码
package com.example.createdoc;
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 org.assertj.core.util.Lists;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import javax.sql.DataSource;
/**
* <h1>数据库表文档生成</h1>
* */
@SpringBootTest
@RunWith(SpringRunner.class)
public class Table2DocTest {
@Resource
private DataSource dataSource;
@Test
public void buildDBDoc() {
EngineConfig engineConfig = EngineConfig.builder()
// 生成文件路径
.fileOutputDir("D:\\temp")
.openOutputDir(false)
// 文件类型 支持 world,html, md
.fileType(EngineFileType.WORD)
.produceType(EngineTemplateType.freemarker).build();
// 生成文档配置, 包含自定义版本号、描述等等
Configuration config = Configuration.builder()
.version("1.0.0")
.description("瞎编数据库")
.dataSource(dataSource)
.engineConfig(engineConfig)
.produceConfig(
// 表的生成规则和忽略规则在这里配置
ProcessConfig.builder()
.designatedTableName(Lists.newArrayList())
.designatedTablePrefix(Lists.newArrayList())
.designatedTableSuffix(Lists.newArrayList())
.ignoreTableName(Lists.newArrayList())
.ignoreTablePrefix(Lists.newArrayList())
.ignoreTableSuffix(Lists.newArrayList())
.build()
).build();
// 执行生成
new DocumentationExecute(config).execute();
}
}
我们用的这个组件 screw 可以实现生成doc、md、html类型的文档,生成的目录在代码中可配置
就这样,该下班下班,该下课下课