如图,这是导出后的mysql数据库结构文档,排版整齐,数据完整;
目前支持html,word,和md格式,可自定义配置枚举;
下面来说下构建数据库结构文档一键导出功能
1.引入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>
2. 配置数据库
使用springboot自身的properties或者yml文件,并且需要引入hikariCP连接池;
如果原先配置文件没有采用Hikari,可在properties或者yml文件增加一行代码:
spring.datasource.type= com.zaxxer.hikari.HikariDataSource
然后配置连接的当前数据库,用户名密码和url等等;
贴上依赖:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.6.1</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
3.编写测试类
//导包省略,导入时idea会自动导入;
//采用Junit单元测试
@SpringBootTest
public class Test1 {
@Test
public void contextLoads(){
DataSource dataSourceMysql = applicationContext.getBean(DataSource.class);
// 生成文件配置
EngineConfig engineConfig = EngineConfig.builder()
// 生成文件路径
.fileOutputDir("E:\\word")
// 打开目录
.openOutputDir(true)
// 文件类型
.fileType(EngineFileType.WORD)
// 生成模板实现
.produceType(EngineTemplateType.freemarker).build();
// 生成文档配置(包含以下自定义版本号、描述等配置连接)
Configuration config = Configuration.builder()
.version("1.0")
.description("数据库表文档")
.dataSource(dataSourceMysql)
.engineConfig(engineConfig)
.produceConfig(getProcessConfig())
.build();
// 执行生成
new DocumentationExecute(config).execute();
}
/**
* 配置想要生成的表+ 配置想要忽略的表
* @return 生成表配置
*/
public static ProcessConfig getProcessConfig(){
// 忽略表名
List<String> ignoreTableName = Arrays.asList("xxx");
// 忽略表前缀,如忽略a开头的数据库表
List<String> ignorePrefix = Arrays.asList("a");
// 忽略表后缀
List<String> ignoreSuffix = Arrays.asList("_??");
return ProcessConfig.builder()
//根据名称指定表生成
.designatedTableName(new ArrayList<>())
//根据表前缀生成
.designatedTablePrefix(new ArrayList<>())
//根据表后缀生成
.designatedTableSuffix(new ArrayList<>())
//忽略表名
.ignoreTableName(ignoreTableName)
//忽略表前缀
.ignoreTablePrefix(ignorePrefix)
//忽略表后缀
.ignoreTableSuffix(ignoreSuffix).build();
}
}