代码拉取完成,页面将自动刷新
鉴于服务的公司内部confluence中的数据字典,大多数都是从数据库客户端copy出来的DDL文件。
对于开发人员说,编写数据字典需要把一张张表的DDL内容copy到confluence页面里,比较繁琐和浪费时间。
因此本人花了两个多月休息时间,编写了一个可以生成html,markdown,word,excel四种格式数据字典的maven插件
欢迎试用~
ps:由于本人只熟悉mysql数据库,所以该插件目前不支持mysql以外的数据库,欢迎好心人提oracle,sqlserver等数据库的PR,谢谢啦~
<dependency>
<groupId>com.wujunshen.dumpling</groupId>
<artifactId>dumpling-core</artifactId>
<version>${latestVersion}</version>
</dependency>
/**
* 获取数据源
*/
public DataSource getDataSource() {
File path =
FileUtils.getFileByPath(
FILE_OUTPUT_DIR + "/src/test/resources/properties/mysql.properties");
Properties properties = new Properties();
FileInputStream inputStream = new FileInputStream(Objects.requireNonNull(path));
properties.load(inputStream);
// 数据源
HikariConfig config = new HikariConfig();
config.setDriverClassName(getDriver(properties));
config.setJdbcUrl(getUrl(properties));
config.setUsername(getUserName(properties));
config.setPassword(getPassword(properties));
// 设置可以获取tables备注信息
config.addDataSourceProperty("useInformationSchema", "true");
config.setMinimumIdle(2);
config.setMaximumPoolSize(5);
return new HikariDataSource(config);
}
/**
* 获取生成引擎配置
*/
public EngineConfig getEngineConfig(
EngineFileType engineFileType, EngineTemplateType engineTemplateType) {
return EngineConfig.builder()
// 生成文件路径
.fileOutputDir(FILE_OUTPUT_DIR)
// 打开目录
.openOutputDir(true)
// 文件类型
.fileType(engineFileType)
// 生成模板实现
.produceType(engineTemplateType)
.build();
}
/**
* 配置
*
* @param engineConfig EngineConfig
* @return Configuration
*/
public Configuration config(EngineConfig engineConfig) {
return Configuration.builder()
// 版本
.version("1.0")
// 描述
.description("数据字典")
// 数据源
.dataSource(getDataSource())
// 生成配置
.engineConfig(engineConfig)
// 生成配置
.produceConfig(setIgnoreSetting())
.build();
}
/**
* 设置忽略表配置
*
* @return ProcessConfig
*/
public ProcessConfig setIgnoreSetting() {
List<String> ignoreTableName = new ArrayList<>();
ignoreTableName.add("test");
// 忽略表前缀
List<String> ignorePrefix = new ArrayList<>();
ignorePrefix.add("test");
// 忽略表后缀
List<String> ignoreSuffix = new ArrayList<>();
ignoreSuffix.add("test");
return ProcessConfig.builder()
// 忽略表名
.ignoreTableName(ignoreTableName)
// 忽略表前缀
.ignoreTablePrefix(ignorePrefix)
// 忽略表后缀
.ignoreTableSuffix(ignoreSuffix)
.build();
}
/**
* 执行数据字典生成的单元测试方法
*
*/
@Test
@Order(0)
@DisplayName("生成数据字典-md-freemarker")
void mdFreemarker() {
EngineConfig engineConfig = getEngineConfig(MD, FREEMARKER);
Configuration config = config(engineConfig);
execute(config);
}
<build>
<plugins>
<plugin>
<groupId>com.wujunshen.dumpling</groupId>
<artifactId>dumpling-maven-plugin</artifactId>
<version>${latestVersion}</version>
<dependencies>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
</dependencies>
<configuration>
<username>username</username>
<password>password</password>
<driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
<jdbcUrl>jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8&useInformationSchema=true</jdbcUrl>
<!--数据字典文档格式,包括html、doc、xls、md四种格式。默认html-->
<fileType>html</fileType>
<!--是否需要打开已生成的数据字典文档所在的目录,true为打开,false为不打开。默认false-->
<openOutputDir>false</openOutputDir>
<!--数据字典文档的内容模板类型,有freemarker、velocity两种。默认freemarker-->
<produceType>freemarker</produceType>
<!--文档名为空时:采用[数据库名称-描述-版本号]作为文档名-->
<fileName>生成的文档名</fileName>
<!--描述-->
<description>数据字典</description>
<!--版本-->
<version>${project.version}</version>
<!--标题-->
<title>数据字典</title>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。