java-通过数据库生成-word的数据结构文档

第一步引入相关Maven依赖:

  <!--mysql连接-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.16</version>
    </dependency>
 
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
      <groupId>cn.smallbun.screw</groupId>
      <artifactId>screw-core</artifactId>
      <version>1.0.5</version>
    </dependency>
 
    <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
      <version>2.3.30</version>
    </dependency>
 
    <!-- HikariCP:数据库连接池组件 -->
    <dependency>
      <groupId>com.zaxxer</groupId>
      <artifactId>HikariCP</artifactId>
      <version>3.4.5</version>
    </dependency>
 
  </dependencies>

 第二步:以下相关代码修改下对应的数据库配置直接运行就可以了

public class Test {
    /**
     * 路径
     */
    private static final String MYSQL_URL = "jdbc:mysql://localhost:3306/yzdx_vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true";
    /**
     * 数据库名
     */
    private static final String MYSQL_NAME = "yzdx_vue";
    /**
     * mysql用户名
     */
    private static final String MYSQL_USERNAME = "root";
    /**
     * mysql密码
     */
    private static final String MYSQL_PASSWORD = "123456";
    /**
     * 文件输出目录
     */
    private static final String FILE_OUTPUT_DIR = "E:\\Word";

    /**
     * 可以设置 Word 或者 Markdown 格式
     */
    private static final EngineFileType FILE_OUTPUT_TYPE = EngineFileType.WORD;
    private static final String DOC_FILE_NAME = "智慧消防管理系统-数据库表设计文档";
    private static final String DOC_VERSION = "V1.0.0";
    private static final String DOC_DESCRIPTION = "数据库表设计描述";

    public static void main(String[] args) {
        // 创建 screw 的配置
        Configuration config = Configuration.builder()
            // 版本
            .version(DOC_VERSION)
            // 描述
            .description(DOC_DESCRIPTION)
            // 数据源
            .dataSource(buildDataSource())
            // 引擎配置
            .engineConfig(buildEngineConfig())
            // 处理配置
            .produceConfig(buildProcessConfig())
            .build();

        // 执行 screw,生成数据库文档
        new DocumentationExecute(config).execute();
    }

    /**
     * 创建数据源
     */
    private static HikariDataSource buildDataSource() {
        // 创建 HikariConfig 配置类
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
        hikariConfig.setJdbcUrl(MYSQL_URL);
        hikariConfig.setUsername(MYSQL_USERNAME);
        hikariConfig.setPassword(MYSQL_PASSWORD);
        // 设置可以获取 tables remarks 信息
        hikariConfig.addDataSourceProperty("useInformationSchema", "true");
        hikariConfig.setMinimumIdle(2);
        hikariConfig.setMaximumPoolSize(5);
        // 创建数据源
        HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
        return hikariDataSource;
    }

    /**
     * 创建 screw 的引擎配置
     */
    private static EngineConfig buildEngineConfig() {
        return EngineConfig.builder()
            // 生成文件路径
            .fileOutputDir(FILE_OUTPUT_DIR)
            // 打开目录
            .openOutputDir(false)
            // 文件类型
            .fileType(FILE_OUTPUT_TYPE)
            // 文件类型
            .produceType(EngineTemplateType.freemarker)
            // 自定义文件名称
            .fileName(DOC_FILE_NAME)
            .build();
    }

    /**
     * 创建 screw 的处理配置,一般可忽略
     * 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
     */
    private static ProcessConfig buildProcessConfig() {
        return ProcessConfig.builder()
            // 根据名称指定表生成
            .designatedTableName(Collections.<String>emptyList())
            // 根据表前缀生成
            .designatedTablePrefix(Collections.<String>emptyList())
            // 根据表后缀生成
            .designatedTableSuffix(Collections.<String>emptyList())
            // 忽略数据库中address这个表名
            .ignoreTableName(Arrays.asList("ci_special_zone"))
            // 忽略表前缀,就是db1数据库中表名是t_开头的都不生产数据库文档(t_student,t_user这两张表)
//            .ignoreTablePrefix(Collections.singletonList("act_"))
            // 忽略表前缀,多张表
            .ignoreTablePrefix(Arrays.asList("act_","xxl_","zz_","gen_","flw"))
            // 忽略表后缀(就是db1数据库中表名是_teacher结尾的都不生产数据库文档:stu_teacher)
            .ignoreTableSuffix(Collections.singletonList("_teacher"))
            .build();
    }
}

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个射手座的程序猿!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值