package cn.flight.feather.database
|
|
import cn.smallbun.screw.core.Configuration
|
import cn.smallbun.screw.core.engine.EngineConfig
|
import cn.smallbun.screw.core.engine.EngineFileType
|
import cn.smallbun.screw.core.engine.EngineTemplateType
|
import cn.smallbun.screw.core.execute.DocumentationExecute
|
import cn.smallbun.screw.core.process.ProcessConfig
|
import com.zaxxer.hikari.HikariConfig
|
import com.zaxxer.hikari.HikariDataSource
|
import javax.sql.DataSource
|
|
|
/**
|
* 导出数据库表结构至文档中
|
* @date 2025/8/5
|
* @author feiyu02
|
*/
|
object ExportDBToFile {
|
|
fun connectDB(url: String, username: String, password: String): HikariDataSource {
|
// 配置Hikari连接池
|
val hikariConfig = HikariConfig()
|
try {
|
Class.forName("com.mysql.cj.jdbc.Driver") // 显式加载数据库驱动类
|
} catch (e: ClassNotFoundException) {
|
e.printStackTrace()
|
throw RuntimeException("数据库驱动类加载失败,请确保驱动包已正确添加到项目中", e)
|
}
|
hikariConfig.driverClassName = "com.mysql.cj.jdbc.Driver"
|
hikariConfig.jdbcUrl = url
|
hikariConfig.username = username
|
hikariConfig.password = password
|
|
// 设置可以获取tables remarks信息
|
hikariConfig.addDataSourceProperty("useInformationSchema", "true")
|
hikariConfig.minimumIdle = 2
|
hikariConfig.maximumPoolSize = 5
|
return HikariDataSource(hikariConfig)
|
}
|
|
fun genConfig(
|
dataSource: DataSource,
|
fileName: String = "数据库结构说明文档",
|
version: String = "1.0.0",
|
outputDir:String = "C:/Users/feiyu02/Downloads"
|
): Configuration {
|
|
// 配置生成文件相关参数
|
val engineConfig = EngineConfig.builder()
|
// 生成文件路径
|
.fileOutputDir(outputDir)
|
// 打开目录
|
.openOutputDir(false)
|
// 文件类型
|
.fileType(EngineFileType.WORD)
|
// 生成模板实现
|
.produceType(EngineTemplateType.freemarker).build()
|
|
|
// 忽略表前缀
|
// val ignoreTablePrefix: List<String> = mutableListOf("gen_", "old_", "t_")
|
val ignoreTablePrefix: List<String> = emptyList()
|
|
|
// 配置处理表的参数
|
val processConfig = ProcessConfig.builder().ignoreTablePrefix(ignoreTablePrefix).build()
|
|
|
// 配置生成文档的详细信息
|
return Configuration.builder().version(version).description(fileName).dataSource(dataSource)
|
.engineConfig(engineConfig).produceConfig(processConfig).build()
|
}
|
|
fun execute(dataSource: DataSource, config:Configuration) {
|
// 执行生成文档操作
|
DocumentationExecute(config).execute();
|
}
|
}
|