screw快速导出数据库表结构文档

screw快速导出数据库表结构文档

引入依赖

        <!-- freemarker -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>

        <!-- screw -->
        <dependency>
            <groupId>cn.smallbun.screw</groupId>
            <artifactId>screw-core</artifactId>
            <version>1.0.5</version>
        </dependency>

        <!-- HikariCP -->
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>3.4.5</version>
        </dependency>
        <!--mysql driver-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>

编写代码


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;
import java.util.ArrayList;

/**
 * 功能描述:  数据库 表结构 生成
 *
 * @author : yzd e-mail: [email protected]
 * @return :
 * @create : 2023/3/20 11:56
 */
public class DbExport {
    
    

	public static final String host = "192.168.2.111";

	public static final String db_name = "health_card_investigation";
	public static final String file_path = "E:\\2";

	public static void main(String[] args) {
    
    
		HikariConfig hikariConfig = new HikariConfig();
		hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
		hikariConfig.setJdbcUrl("jdbc:mysql://" + host +
			":3306/" + db_name + "?serverTimezone=UTC&useUnicode=true" +
			"&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8");
		hikariConfig.setUsername("root");
		hikariConfig.setPassword("admin");
		//设置可以获取tables remarks信息
		hikariConfig.addDataSourceProperty("useInformationSchema", "true");
		hikariConfig.setMinimumIdle(2);
		hikariConfig.setMaximumPoolSize(5);
		DataSource dataSource = new HikariDataSource(hikariConfig);
		//配置
		Configuration config = Configuration.builder()
			//版本
			.version("1.0.0")
			//描述
			.description("数据库设计文档生成")
			//数据源
			.dataSource(dataSource)
			//生成配置
			.engineConfig(getEngineConfig())
			//生成配置
			.produceConfig(getProcessConfig())
			.build();
		//执行生成
		new DocumentationExecute(config).execute();
	}

	/**
	 *  文件路径 目录 等
	 *
	 * @return 生成配置
	 */
	public static EngineConfig getEngineConfig() {
    
    
		//生成配置
		return EngineConfig.builder()
			//生成文件路径
			.fileOutputDir(file_path)
			//导出的目录地址
			//打开目录
			.openOutputDir(true)
			//文件类型
			.fileType(EngineFileType.WORD)
			//生成模板实现
			.produceType(EngineTemplateType.freemarker)
			//自定义文件名称
			.build();
	}

	/**
	 * 配置想要生成的表+ 配置想要忽略的表
	 *
	 * @return 生成表配置
	 */
	public static ProcessConfig getProcessConfig() {
    
    
		//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
		//忽略表
		ArrayList<String> ignoreTableName = new ArrayList<>();
		//忽略表前缀
		ArrayList<String> ignorePrefix = new ArrayList<>();
		//忽略表后缀
		ArrayList<String> ignoreSuffix = new ArrayList<>();

		return ProcessConfig.builder()
			//根据名称指定表生成
			.designatedTableName(new ArrayList<>())
			//根据表前缀生成
			.designatedTablePrefix(new ArrayList<>())
			//根据表后缀生成
			.designatedTableSuffix(new ArrayList<>())
			//忽略表名
			.ignoreTableName(ignoreTableName)
			//忽略表前缀
			.ignoreTablePrefix(ignorePrefix)
			//忽略表后缀
			.ignoreTableSuffix(ignoreSuffix).build();
	}
}

参考

https://gitee.com/leshalv/screw

猜你喜欢

转载自blog.csdn.net/qq_35385687/article/details/129672447
今日推荐