首页 > 文章列表 > 如何使用Java快速生成数据库文档?

如何使用Java快速生成数据库文档?

java 数据库
261 2023-04-28

java怎么快速生成数据库文档

环境准备

一个开发数据库,以下截取了部分表,实际中可能远不止这些

1、导入pom依赖

		<!-- screw核心 -->

        <dependency>

            <groupId>cn.smallbun.screw</groupId>

            <artifactId>screw-core</artifactId>

            <version>1.0.3</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.11</version>

        </dependency>

2、数据库连接工具类

public class JdbcUtils {

    public static String DRIVER_NAME = "com.mysql.jdbc.Driver";

    public static String JDBC_URL = "jdbc:mysql://IP:3306/tenant";

    public static String USER_NAME = "zhangcy";

    public static String PASSWORD = "zhangcy";

    public static DataSource getDataSourceFonfig() {

        //数据源

        HikariConfig hikariConfig = new HikariConfig();

        hikariConfig.setDriverClassName(DRIVER_NAME);

        hikariConfig.setJdbcUrl(JDBC_URL);

        hikariConfig.setUsername(USER_NAME);

        hikariConfig.setPassword(PASSWORD);

        //设置可以获取tables remarks信息

        hikariConfig.addDataSourceProperty("useInformationSchema", "true");

        hikariConfig.setMinimumIdle(2);

        hikariConfig.setMaximumPoolSize(5);

        return new HikariDataSource(hikariConfig);

    }

    public static Connection getConnection() {

        Connection conn = null;

        try {

            Class.forName(DRIVER_NAME).newInstance();

            conn = java.sql.DriverManager.getConnection(JDBC_URL, USER_NAME, PASSWORD);

            return conn;

        } catch (Exception e) {

            e.printStackTrace();

        }

        return conn;

    }

    /**

     * 获取某个数据库下的所有表

     *

     * @return

     */

    public static List<String> getTablesNames() {

        List<String> tables = new ArrayList<>();

        Connection connection = getConnection();

        ResultSet rs = null;

        Statement st = null;

        try {

            st = connection.createStatement();

            rs = st.executeQuery("show tables");

            while (rs.next()) {

                String string = rs.getString(1);

                tables.add(string);

            }

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            try {

                rs.close();

                st.close();

                connection.close();

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

        return tables;

    }

}

3、生成数据库文档核心方法

public class GenerateDoc {

    /**

     * 生成的文档本地路径

     */

    public static final String LOCAL_PATH= "D:\\soft\\table";

    public static void main(String[] args) {

        DataSource dataSource = JdbcUtils.getDataSourceFonfig();

        EngineConfig engineConfig = EngineConfig.builder()

                //导出文件地址

                .fileOutputDir(LOCAL_PATH)

                //是否打开文件夹

                .openOutputDir(true)

                //文件类型:html、doc、mockdown

                .fileType(EngineFileType.WORD)

                //模板引擎

                .produceType(EngineTemplateType.freemarker).build();

        ProcessConfig processConfig = ProcessConfig.builder()

                //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置

                //根据名称指定表生成

                .designatedTableName(JdbcUtils.getTablesNames())

                //根据表前缀生成

                .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();

    }

}

本段方法中有大量得注释,解释如何生成数据库文档的步骤,以及各个配置参数的作用,拿到程序之后,只需运行main方法即可,注意,可以根据自己的需要,选择生成那种展示形式的文档,比如是本地的doc,或者markdown,或html都是可选的

本段以doc为例,运行main方法,观察结果:

打开数据库文档,基本来说,我们只需简单调整下整体的格式即可使用了

不妨再换一下,生成HTML格式的文件看看,修改下程序中的参数

观察结果: