Java 数据库设计文档生成
package com.nosya; 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.baomidou.mybatisplus.extension.toolkit.JdbcUtils; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.Properties; import javax.sql.DataSource; import java.util.ArrayList; public class DocumentGeneration { public static void main(String[] args) { try { documentGeneration(); } catch (Exception e) { e.printStackTrace(); } } /** * 文档生成 */ public static void documentGeneration() throws Exception { String path = System.getProperty("user.dir"); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path + "/application.properties")); Properties props = new Properties(); props.load(bis); // JdbcUtils.class.getClassLoader().getResourceAsStream("application.properties")); String driver = props.getProperty("driver"); String url = props.getProperty("url"); String username = props.getProperty("username"); String password = props.getProperty("password"); String fileOutputDir = props.getProperty("filepath"); // "E://abc/"; //数据源 HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setDriverClassName(driver); // "com.mysql.cj.jdbc.Driver"); hikariConfig.setJdbcUrl(url); // "jdbc:mysql://127.0.0.1:3306/test"); hikariConfig.setUsername(username); // "root"); hikariConfig.setPassword(password); // "e3eae935e15411ecb5bf28107b42b865"); //设置可以获取tables remarks信息 hikariConfig.addDataSourceProperty("useInformationSchema", "true"); hikariConfig.setMinimumIdle(2); hikariConfig.setMaximumPoolSize(5); DataSource dataSource = new HikariDataSource(hikariConfig); //生成配置 EngineConfig engineConfig = EngineConfig.builder() //生成文件路径 .fileOutputDir(fileOutputDir) //打开目录 .openOutputDir(true) //文件类型 .fileType(EngineFileType.WORD) // .HTML) //生成模板实现 .produceType(EngineTemplateType.freemarker) //自定义文件名称 // .fileName("自定义文件名称") .build(); //忽略表 ArrayList<String> ignoreTableName = new ArrayList<>(); ignoreTableName.add("test_user"); ignoreTableName.add("test_group"); //忽略表前缀 ArrayList<String> ignorePrefix = new ArrayList<>(); ignorePrefix.add("test_"); //忽略表后缀 ArrayList<String> ignoreSuffix = new ArrayList<>(); ignoreSuffix.add("_test"); ProcessConfig processConfig = ProcessConfig.builder() //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置 //根据名称指定表生成 .designatedTableName(new ArrayList<>()) //根据表前缀生成 .designatedTablePrefix(new ArrayList<>()) //根据表后缀生成 .designatedTableSuffix(new ArrayList<>()) //忽略表名 .ignoreTableName(ignoreTableName) //忽略表前缀 .ignoreTablePrefix(ignorePrefix) //忽略表后缀 .ignoreTableSuffix(ignoreSuffix).build(); //配置 String currentTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); Configuration config = Configuration.builder() //版本 .version("1.0.0") //描述 .description("数据库设计文档生成" + currentTime) //数据源 .dataSource(dataSource) //生成配置 .engineConfig(engineConfig) //生成配置 .produceConfig(processConfig) .build(); //执行生成 new DocumentationExecute(config).execute(); } }
有些事情,没经历过不知道原理,没失败过不明白奥妙,没痛苦过不了解真谛。临渊羡鱼,不如退而结网!

浙公网安备 33010602011771号