screw一键生成数据库文档

1. 简介

  在项目开发和交付阶段,数据库文档是必不可少的。对于大型项目多个数据库几百甚至几千张表来说,手写数据库文档必然是耗时且痛苦的。因此需要一个插件自动生成文档。
  screw提供了多种文件类型和多种模板的自动生成工具,上手简单且效果不错。

2. 支持数据库类型

  MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB 其他正在开发中

3. 示例代码

  • 创建项目
  • 修改pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.c3stones</groupId>
	<artifactId>generate-database-document-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>generate-database-document-demo</name>
	<description>Generate Database Document Demo</description>

	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
	</properties>

	<dependencies>
		<!-- Screw Core -->
		<dependency>
			<groupId>cn.smallbun.screw</groupId>
			<artifactId>screw-core</artifactId>
			<version>1.0.2</version>
		</dependency>
		<!-- HikariCP -->
		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
			<version>3.4.5</version>
		</dependency>
		<!-- Mysql Driver -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.20</version>
		</dependency>
	</dependencies>

</project>
  • 创建生成类
import java.util.Arrays;
import java.util.List;

import javax.sql.DataSource;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

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;

/**
 * 生成数据库文档
 * 
 * @author CL
 *
 */
public class GenerateDatabaseDocumnet {

	public static void main(String[] args) {
		// 数据源
		HikariConfig hikariConfig = new HikariConfig();
		hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
		hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test");
		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("C:\\Users\\Administrator\\Desktop")
				// 打开目录
				.openOutputDir(false)
				// 文件类型
				.fileType(EngineFileType.HTML)
				// 生成模板实现
				.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();

		// 3、生成文档配置(包含以下自定义版本号、描述等配置连接)
		Configuration config = Configuration.builder().version("1.0.0").description("数据库文档").dataSource(dataSource)
				.engineConfig(engineConfig).produceConfig(processConfig).build();

		// 4、执行生成
		new DocumentationExecute(config).execute();
	}

}
  • 运行即可

4. 说明

  • 文件类型
      EngineFileType枚举类中提供三种类型:HTMLWORDMD
  • 模板类型
      EngineTemplateType枚举类中提供两种类型:freemarkervelocity
  • 生成方式
      一种是代码生成,还有一种是通过Maven打包生成,详情请查看:https://gitee.com/leshalv/screw

5. 项目地址

  generate-database-document-demo

posted @ 2020-07-28 19:07  C3Stones  阅读(1718)  评论(0编辑  收藏  举报