zoukankan      html  css  js  c++  java
  • 【java】一种自动生成数据库文档的方法

    背景:
    常在项目交付时供他人参阅,我们常会出一版数据库文档,详细解释每个字段,如果一个个去手动地导,不仅太慢而且chun,最近在GitHub发现一款神器,screw,只需简单配置即可自动导出。
    GitHub地址

    一、数据库支持
    MySQL
    MariaDB
    TIDB
    Oracle
    SqlServer
    PostgreSQL
    Cache DB

    二、配置
    1、pom文件

    <!-- screw核心 -->
            <dependency>
                <groupId>cn.smallbun.screw</groupId>
                <artifactId>screw-core</artifactId>
                <version>1.0.3</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>

    2、代码

    package com.jobnew.Manager.backstage.util;/**
     * @Author: wwwppp
     * @Date: 2020-8-31 16:31
     */
    
    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;
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * @Author: wwwppp
     * @Date: 2020-8-31 16:31
     */
    public class pojoGeneration {
    
        public static void main(String[] args) {
            //数据源
            HikariConfig hikariConfig = new HikariConfig();
            hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");
            hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/pay_sf");
            hikariConfig.setUsername("root");
            hikariConfig.setPassword("root");
            //设置可以获取tables remarks信息
            hikariConfig.addDataSourceProperty("useInformationSchema", "true");
            hikariConfig.setMinimumIdle(2);
            hikariConfig.setMaximumPoolSize(5);
            DataSource dataSource = new HikariDataSource(hikariConfig);
    
            EngineConfig engineConfig = EngineConfig.builder()
                    //导出文件地址
                    .fileOutputDir("D:/")
                    //是否打开文件夹
                    .openOutputDir(true)
                    //文件类型:html、doc、mockdown
                    .fileType(EngineFileType.HTML)
                    //模板引擎
                    .produceType(EngineTemplateType.freemarker).build();
    
            ProcessConfig processConfig = ProcessConfig.builder()
                    //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
                    //根据名称指定表生成
                    .designatedTableName(new ArrayList<>())
                    //根据表前缀生成
                    .designatedTablePrefix(new ArrayList<>())
                    //根据表后缀生成
                    .designatedTableSuffix(new ArrayList<>()).build();
    
            //设置生成pojo相关配置
            Configuration config = Configuration.builder()
                    .version("1.0.0")
                    .description("数据库设计文档")
                    .dataSource(dataSource)
                    .engineConfig(engineConfig)
                    .produceConfig(processConfig).build();
            new DocumentationExecute(config).execute();
        }
    
        /**
         * 配置想要生成的表+ 配置想要忽略的表
         *
         * @return 生成表配置
         */
        public static ProcessConfig getProcessConfig() {
            // 忽略表名
            List<String> ignoreTableName = Arrays.asList("a", "test_group");
            // 忽略表前缀,如忽略a开头的数据库表
            List<String> ignorePrefix = Arrays.asList("a", "t");
            // 忽略表后缀
            List<String> ignoreSuffix = Arrays.asList("_test", "czb_");
            return ProcessConfig.builder()
                    //根据名称指定表生成
                    .designatedTableName(Arrays.asList("fire_user"))
                    //根据表前缀生成
                    .designatedTablePrefix(new ArrayList<>())
                    //根据表后缀生成
                    .designatedTableSuffix(new ArrayList<>())
                    //忽略表名
                    .ignoreTableName(ignoreTableName)
                    //忽略表前缀
                    .ignoreTablePrefix(ignorePrefix)
                    //忽略表后缀
                    .ignoreTableSuffix(ignoreSuffix).build();
        }
    }

    是不是很方便呢!

    ————————————————
    版权声明:本文为CSDN博主「吃鱼的小朋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wphero/article/details/108325199

  • 相关阅读:
    leetcode -- Triangle
    leetcode difficulty and frequency distribution chart
    leetcode -- Sqrt(x)
    leetcode -- Climbing Stairs
    leetcode -- Populating Next Right Pointers in Each Node II
    leetcode -- Populating Next Right Pointers in Each Node
    ThreadLocal
    Thread
    进程或者线程状态
    ThreadGroup
  • 原文地址:https://www.cnblogs.com/fengwenzhee/p/15131818.html
Copyright © 2011-2022 走看看