# dumpling
**Repository Path**: xiangsai/dumpling
## Basic Information
- **Project Name**: dumpling
- **Description**: 饺子-数据字典文档生成工具
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2023-04-14
- **Last Updated**: 2023-04-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 项目名:饺子
鉴于服务的公司内部confluence中的数据字典,大多数都是从数据库客户端copy出来的DDL文件。
对于开发人员说,编写数据字典需要把一张张表的DDL内容copy到confluence页面里,比较繁琐和浪费时间。
因此本人花了两个多月休息时间,编写了一个可以生成html,markdown,word,excel四种格式数据字典的maven插件
欢迎试用~
ps:由于本人只熟悉mysql数据库,所以该插件目前不支持mysql以外的数据库,欢迎好心人提oracle,sqlserver等数据库的PR,谢谢啦~
## 技术栈
- [x] java1.8
- [x] junit5.7
- [x] SPI
- [x] lambda
- [x] freeMarker
- [x] velocity
## 数据库支持
- [x] MySQL
## 文档生成支持
- [x] html
- [x] word
- [x] excel
- [x] markdown
## 使用方式
### 普通方式
+ **引入依赖**
```xml
com.wujunshen.dumpling
dumpling-core
${latestVersion}
```
+ **编写代码**
``` java
/**
* 获取数据源
*/
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 ignoreTableName = new ArrayList<>();
ignoreTableName.add("test");
// 忽略表前缀
List ignorePrefix = new ArrayList<>();
ignorePrefix.add("test");
// 忽略表后缀
List 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);
}
```
### Maven 插件
``` xml
com.wujunshen.dumpling
dumpling-maven-plugin
${latestVersion}
com.zaxxer
HikariCP
3.4.5
mysql
mysql-connector-java
8.0.20
username
password
com.mysql.cj.jdbc.Driver
jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8&useInformationSchema=true
html
false
freemarker
生成的文档名
数据字典
${project.version}
数据字典
compile
run
```
## 生成效果图
### html


### excel


### word


### markdown

