## Java导出Markdown格式的数据字典
前一阵子老板让我写个把项目的数据库字典导出来,但是不要word格式,就要markdown格式的。我第一反应是直接用数据库工具导出word在转成markdown不就行了吗,但是呢数据库更新了不是又要重新导出和转换,直接导出markdown不香吗?
最近整理了一下上传到gitee上去了,需要的自取。
Gitee地址:[https://gitee.com/ssymon/export-to-md.git](https://gitee.com/ssymon/export-to-md.git)
## 如何使用
> 下面讲一下如何使用,我这里用的IDE是IDEA。
> clone地址:[https://gitee.com/ssymon/export-to-md.git](https://gitee.com/ssymon/export-to-md.git)
**1.首先将项目clone到本地**
```
git clone https://gitee.com/ssymon/export-to-md.git
```

**2.使用Idea打开项目**
`File->Open`,打开之后项目结构如下

**3.修改配置文件**
打开application.yml配置文件,修改成自己需要导出的数据库信息
```java
db:
driver: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useSSL=true&verifyServerCertificate=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&allowMultiQueries=true
username: root
password: 123456
# 数据库名
database:
- test
export:
# 文件夹
dir: D:\symon
```
**4.打开ExportApplication.java并执行main函数**
```java
public static void main(String[] args) {
DatabaseExporter exporter = new MySQLDatabaseExporter(ConfigUtil.loadConfig());
exporter.export();
}
```
等待之后控制台显示如下信息,则执行成功
```java
Loading config - application.yml
Export success :D:\symon\test.md
```
## 导出结果

## 扩展数据库
> 通过实现`AbstractDatabaseExporter`类来扩展其他数据库,如下扩展Oracle数据库
```java
public class OracleDatabaseExporter extends AbstractDatabaseExporter{
public OracleDatabaseExporter(AppConfig config) {
super(config);
}
@Override
protected PreparedStatement getTablePreparedStatement(Connection connection, String database) throws SQLException {
// 根据database数据库名拼接自定义SQL查询数据库表
// connection.prepareStatement("查询表SQL")
return null;
}
@Override
protected PreparedStatement getColumnPreparedStatement(Connection connection, String database) throws SQLException {
// 根据database数据库名拼接自定义SQL查询数据库表结构
// connection.prepareStatement("查询表结构SQL")
return null;
}
@Override
protected void setColumnPreparedStatementParams(PreparedStatement ps, String tableName) throws SQLException {
// 设置每个查询表结构SQL的参数:tableName表名
// 例如 ps.setString(1, tableName);
}
@Override
protected List<String> getPrimaryKeyColumnNames(Connection connection, String database, String tableName) throws SQLException {
// 获取数据库(database)表(tableName)的主键列名
return null;
}
}
```
## Markdown转Word,HTML
推荐使用 [pandoc](https://www.pandoc.org/) ,将Markdown转Word,HTML等格式文件
后面有时间我会把pandoc集成到项目中来

老板让我把数据库字典导出到Markdown格式的文件