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;
}
}
网友评论