Java导出Markdown格式的数据字典

前一阵子老板让我写个把项目的数据库字典导出来,但是不要word格式,就要markdown格式的。我第一反应是直接用数据库工具导出word在转成markdown不就行了吗,但是呢数据库更新了不是又要重新导出和转换,直接导出markdown不香吗?

最近整理了一下上传到gitee上去了,需要的自取。
Gitee地址:https://gitee.com/ssymon/export-to-md.git

如何使用

下面讲一下如何使用,我这里用的IDE是IDEA。
clone地址: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配置文件,修改成自己需要导出的数据库信息

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函数

public static void main(String[] args) {
	DatabaseExporter exporter = new MySQLDatabaseExporter(ConfigUtil.loadConfig());
	exporter.export();
}

等待之后控制台显示如下信息,则执行成功

Loading config - application.yml
Export success :D:\symon\test.md

导出结果

在这里插入图片描述

扩展数据库

通过实现AbstractDatabaseExporter类来扩展其他数据库,如下扩展Oracle数据库

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 ,将Markdown转Word,HTML等格式文件

后面有时间我会把pandoc集成到项目中来