• 数据库表结构文档 生成工具screw的使用


    一、screw介绍

    日常的开发工作中,经常会和数据库打交道,在某些场景可能会需要数据库表结构的文档,今天分享个简洁好用的数据库表结构文档生成工具screw

    1.简介

    screw是一个简洁好用的数据库表结构文档的生成工具

    screw目前支持MySQL、Oracle、SqlServer、MariaDB、PostgreSQL等数据库,生成文档目前支持html、word、markdown文档格式。

    github: GitHub - pingfangushi/screw: 简洁好用的数据库表结构文档生成器
    gitee: screw: 简洁好用的数据库表结构文档工具,支持MySQL/MariaDB/SqlServer/Oracle/PostgreSQL/TIDB/CacheDB 数据库。

    2.特点

    screw的特点:

    • 简洁、轻量、设计良好
    • 多数据库支持
    • 多种格式文档
    • 灵活扩展
    • 支持自定义模板

    3.文档格式

    生成文档目前支持html、word、markdown文档格式。

    • html
    • word
      在这里插入图片描述
    • markdown
      在这里插入图片描述

    二、生成方式

    下面以MySQL数据库为例来简单介绍下。

    新建测试库test及表t_user、t_product。

    CREATE TABLE `t_user` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
      `name` varchar(255) DEFAULT NULL COMMENT '名称',
      `age` int(10) DEFAULT NULL COMMENT '年龄',
      `remarks` varchar(255) DEFAULT NULL COMMENT '备注',
      `create_time` datetime DEFAULT NULL COMMENT '创建时间',
      `create_user` varchar(255) DEFAULT NULL COMMENT '创建人',
      `update_time` datetime DEFAULT NULL COMMENT '更新时间',
      `update_user` varchar(255) DEFAULT NULL COMMENT '更新人',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';
    
    CREATE TABLE `t_product` (
      `product_id` int(11) NOT NULL,
      `title` varchar(255) DEFAULT NULL COMMENT '标题',
      `sub_title` varchar(255) DEFAULT NULL COMMENT '副标题',
      `sale_price` decimal(10,2) DEFAULT NULL COMMENT '商品售价',
      `create_time` datetime DEFAULT NULL COMMENT '创建时间',
      `create_by` int(11) DEFAULT NULL COMMENT '创建者',
      `update_time` datetime DEFAULT NULL COMMENT '修改时间',
      `update_by` int(11) DEFAULT NULL COMMENT '修改者',
      PRIMARY KEY (`product_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2.1 方式1:使用 Java 代码

    2.1.1 引入依赖

    引入screw的maven依赖:

     
     <dependency>
         <groupId>cn.smallbun.screwgroupId>
         <artifactId>screw-coreartifactId>
         <version>1.0.5version>
     dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    除此之外,还需引入数据库相关的依赖:

    
    <dependency>
        <groupId>com.zaxxergroupId>
        <artifactId>HikariCPartifactId>
        <version>3.4.5version>
    dependency>
    
    <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
        <scope>runtimescope>
    dependency>
    <dependency>
        <groupId>org.freemarkergroupId>
        <artifactId>freemarkerartifactId>
        <version>2.3.30version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.1.2 编写代码

    package com.example.screwdemo.utils;
    
    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 qzz
     */
    public class DocumentGenerator {
    
        //以下static final修饰的参数 如果是基于SpringBoot项目,可以在配置文件中配置,通过@Value注解获取
        /**
         * MySQL驱动 6.0以前的使用com.mysql.jdbc.Driver,6.0以后的使用com.mysql.cj.jdbc.Driver  我这边使用的是mysql-5.7.25版本的
         */
        private static final String Driver_Class_Name = "com.mysql.jdbc.Driver";
        /**
         * 数据库URL   characterEncoding=UTF-8: 防止生成后文档乱码
         */
        private static final String DB_URL = "jdbc:mysql://localhost:3306/test?&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSl=false";
        /**
         * MySQL数据库账号密码
         */
        private static final String DB_USERNAME = "root";
        private static final String DB_PASSWORD = "root";
        /**
         *  生成数据库文档文件路径 可根据本机电脑自行配置
         */
        private static final String FILE_OUTPUT_DIR = "F:\\dbDoc\\";
    
        /**
         * screw配置的文件名称,即数据库文档名称
         */
        private static final String DOC_FILE_NAME = "数据库设计文档生成";
        /**
         * screw配置的文件类型 HTML->HTML文件  WORD->WORD文件  MD->Markdown文件
         */
        private static final EngineFileType FILE_OUTPUT_TYPE = EngineFileType.WORD;
        /**
         * 版本
         */
        private static final String DOC_VERSION = "1.0.0";
        /**
         * 描述
         */
        private static final String DOC_DESCRIPTION = "数据库设计文档生成";
    
        public static void main(String[] args) {
            generatorDocument();
        }
        public static void generatorDocument() {
            //数据源  创建HikariConfig配置类
            HikariConfig hikariConfig = new HikariConfig();
            hikariConfig.setDriverClassName(Driver_Class_Name);
            hikariConfig.setJdbcUrl(DB_URL);
            hikariConfig.setUsername(DB_USERNAME);
            hikariConfig.setPassword(DB_PASSWORD);
            //#设置useInformationSchema 可以获取tables表注释信息 即解决数据库表和列字段有说明、生成文档没有说明
            hikariConfig.addDataSourceProperty("useInformationSchema", "true");
            hikariConfig.setMinimumIdle(2);
            hikariConfig.setMaximumPoolSize(5);
            DataSource dataSource = new HikariDataSource(hikariConfig);
    
            //创建screw的引擎配置
            EngineConfig engineConfig = EngineConfig.builder()
                    //生成文件路径
                    .fileOutputDir(FILE_OUTPUT_DIR)
                    //打开目录
                    .openOutputDir(true)
                    //文件类型  HTML->HTML文件  WORD->WORD文件  MD->Markdown文件
                    .fileType(FILE_OUTPUT_TYPE)
                    //生成模板实现
                    .produceType(EngineTemplateType.freemarker)
                    //自定义文件名称,即数据库文档名称
                    .fileName(DOC_FILE_NAME).build();
    
            //创建screw的处理配置,可忽略
            //忽略表
            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");
    
            // 需要生成数据库文档的表  如果designatedTablePrefix设置值不为空,则 designatedTableName 中的表名要去掉前缀,不然会重复生成,并且表名和字段注释有误
            ArrayList<String> designatedTableName = new ArrayList<>();
    //        designatedTableName.add("user");
    //        designatedTableName.add("product");
            // 需要生成数据库文档的表前缀
            ArrayList<String> designatedTablePrefix = new ArrayList<>();
            designatedTablePrefix.add("t_");
    
    
            ProcessConfig processConfig = ProcessConfig.builder()
                    //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
                    //根据名称指定表生成
    //                .designatedTableName(new ArrayList<>())
                    .designatedTableName(designatedTableName)
                    //根据表前缀生成
    //                .designatedTablePrefix(new ArrayList<>())
                    .designatedTablePrefix(designatedTablePrefix)
                    //根据表后缀生成
                    .designatedTableSuffix(new ArrayList<>())
                    //忽略表名
                    .ignoreTableName(ignoreTableName)
                    //忽略表前缀
                    .ignoreTablePrefix(ignorePrefix)
                    //忽略表后缀
                    .ignoreTableSuffix(ignoreSuffix).build();
            //创建screw的配置
            Configuration config = Configuration.builder()
                    //版本
                    .version(DOC_VERSION)
                    //描述
                    .description(DOC_DESCRIPTION)
                    //数据源
                    .dataSource(dataSource)
                    //生成配置
                    .engineConfig(engineConfig)
                    //生成配置
                    .produceConfig(processConfig)
                    .build();
            //执行screw,生成数据库文档
            new DocumentationExecute(config).execute();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138

    注意点:

    1. 如果要生成数据库中的所有表的数据库文档,可忽略screw的处理配置
    2. 如果要生成指定表的数据库文档,需要配置screw的处理配置,可指定表名、指定表前缀
    3. 指定表名、指定表前缀的使用:
      • 如果指定表名designatedTableName中的表名 已包含表的前缀,则无需配置指定表的前缀;
      • 如果指定表名designatedTableName中的表名 不包含表的前缀,则需配置指定表的前缀;

    示例:
    如数据库中存在表t_user 和 t_product等多张表,要求只导出t_user 和 t_product的数据库文档,screw的处理配置中的指定表与指定表的前缀的处理方式有如下两种:
    方式一:指定表

    // 需要生成数据库文档的表
    ArrayList<String> designatedTableName = new ArrayList<>();
    designatedTableName.add("t_user");
    designatedTableName.add("t_product");
    
    • 1
    • 2
    • 3
    • 4

    方式二:指定表与指定表的前缀

    // 需要生成数据库文档的表
    ArrayList<String> designatedTableName = new ArrayList<>();
    designatedTableName.add("user");
    designatedTableName.add("product");
    // 需要生成数据库文档的表前缀
    ArrayList<String> designatedTablePrefix = new ArrayList<>();
    designatedTablePrefix.add("t_");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.1.3 测试

    在这里插入图片描述

    2.2 方式2:使用 Spring Boot 整合screw

    2.2.1 引入依赖

    引入screw的maven依赖:

     
     <dependency>
         <groupId>cn.smallbun.screwgroupId>
         <artifactId>screw-coreartifactId>
         <version>1.0.5version>
     dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    除此之外,还需引入数据库相关的依赖:

    
    <dependency>
        <groupId>com.zaxxergroupId>
        <artifactId>HikariCPartifactId>
        <version>3.4.5version>
    dependency>
    
    <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
        <scope>runtimescope>
    dependency>
    <dependency>
        <groupId>org.freemarkergroupId>
        <artifactId>freemarkerartifactId>
        <version>2.3.30version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.2.2 配置数据源信息

    application.yml:

    # 服务端口
    server:
      port: 8083
    
    # 数据源配置
    spring:
      datasource:
        name: test
        url: jdbc:mysql://localhost:3306/test?&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSl=false
        username: root
        password: root
        driver-class-name: com.mysql.jdbc.Driver
        xa:
          properties:
            #设置useInformationSchema 可以获取tables表注释信息 即解决数据库表和列字段有说明、生成文档没有说明
           useInformationSchema: true
      
    # 生成数据库文档文件路径
    FILE_OUTPUT_DIR: F:\dbDoc\
    # 版本
    DOC_VERSION: 1.0.0
    # screw配置的文件名称,即数据库文档名称
    DOC_FILE_NAME: xx数据库设计文档
    # 描述
    DOC_DESCRIPTION: 数据库设计文档生成
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    2.2.3 编写代码

    generatorService.java:

    package com.example.screwdemo.service;
    
    /**
     *  生成 数据库表结构文档
     * @author qzz
     */
    public interface GeneratorService {
    
        /**
         * 生成 数据库表结构文档
         */
        void generatorDocument();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    generatorServiceImpl.java:

    package com.example.screwdemo.service.impl;
    
    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.example.screwdemo.service.GeneratorService;
    import com.zaxxer.hikari.HikariConfig;
    import com.zaxxer.hikari.HikariDataSource;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.ApplicationContext;
    import org.springframework.stereotype.Service;
    import javax.sql.DataSource;
    import java.util.ArrayList;
    
    /**
     * 生成 数据库表结构文档
     * @author qzz
     */
    @Service
    public class GeneRatorServiceImpl implements GeneratorService {
    
        @Autowired
        private ApplicationContext applicationContext;//注入应用上下文
    
        /**
         * MySQL驱动
         */
        @Value("${spring.datasource.driver-class-name}")
        private String Driver_Class_Name;
        /**
         * 数据库URL   characterEncoding=UTF-8: 防止生成后文档乱码
         */
        @Value("${spring.datasource.url}")
        private String DB_URL;
        /**
         * MySQL数据库账号密码
         */
        @Value("${spring.datasource.username}")
        private String DB_USERNAME = "root";
        @Value("${spring.datasource.password}")
        private String DB_PASSWORD = "root";
    
        /**
         *  生成数据库文档文件路径 可根据本机电脑自行配置
         */
        @Value("${FILE_OUTPUT_DIR}")
        private String FILE_OUTPUT_DIR;
    
        /**
         * 版本
         */
        @Value("${DOC_VERSION}")
        private String DOC_VERSION;
    
        /**
         * screw配置的文件类型 HTML->HTML文件  WORD->WORD文件  MD->Markdown文件
         */
        private static final EngineFileType FILE_OUTPUT_TYPE = EngineFileType.WORD;
        /**
         * screw配置的文件名称,即数据库文档名称
         */
        @Value("${DOC_FILE_NAME}")
        private String DOC_FILE_NAME;
        /**
         * 描述
         */
        @Value("${DOC_DESCRIPTION}")
        private String DOC_DESCRIPTION;
    
        /**
         * 生成 数据库表结构文档
         */
        @Override
        public void generatorDocument() {
            //获取数据源 此方法报No qualifying bean of type 'javax.sql.DataSource' available
    //        DataSource dataSource = applicationContext.getBean(DataSource.class);
    
            //获取数据源  创建HikariConfig配置类
            HikariConfig hikariConfig = new HikariConfig();
            hikariConfig.setDriverClassName(Driver_Class_Name);
            hikariConfig.setJdbcUrl(DB_URL);
            hikariConfig.setUsername(DB_USERNAME);
            hikariConfig.setPassword(DB_PASSWORD);
            //#设置useInformationSchema 可以获取tables表注释信息 即解决数据库表和列字段有说明、生成文档没有说明
            hikariConfig.addDataSourceProperty("useInformationSchema", "true");
            hikariConfig.setMinimumIdle(2);
            hikariConfig.setMaximumPoolSize(5);
            DataSource dataSource = new HikariDataSource(hikariConfig);
    
            //创建screw的引擎配置
            EngineConfig engineConfig = EngineConfig.builder()
                    //生成文件路径
                    .fileOutputDir(FILE_OUTPUT_DIR)
                    //打开目录
                    .openOutputDir(true)
                    //文件类型  HTML->HTML文件  WORD->WORD文件  MD->Markdown文件
                    .fileType(FILE_OUTPUT_TYPE)
                    //生成模板实现
                    .produceType(EngineTemplateType.freemarker)
                    //自定义文件名称,即数据库文档名称
                    .fileName(DOC_FILE_NAME).build();
    
            //创建screw的配置:生成文档配置(包含以下自定义版本号、描述等配置连接)
            Configuration config = Configuration.builder()
                    //版本
                    .version(DOC_VERSION)
                    //描述
                    .description(DOC_DESCRIPTION)
                    //数据源
                    .dataSource(dataSource)
                    //生成配置
                    .engineConfig(engineConfig)
                    //生成配置
                    .produceConfig(getProcessConfig())
                    .build();
            //执行screw,生成数据库文档
            new DocumentationExecute(config).execute();
        }
    
        /**
         * 配置想要生成的表、想要忽略的表
         * @return
         */
        private ProcessConfig getProcessConfig() {
            //创建screw的处理配置,可忽略
            //忽略表
            ArrayList<String> ignoreTableName = new ArrayList<>();
            ignoreTableName.add("test_user");
            ignoreTableName.add("test_group");
            //忽略表前缀,如忽略test_开头的数据库表
            ArrayList<String> ignorePrefix = new ArrayList<>();
            ignorePrefix.add("test_");
            //忽略表后缀
            ArrayList<String> ignoreSuffix = new ArrayList<>();
            ignoreSuffix.add("_test");
    
            // 需要生成数据库文档的表  如果designatedTablePrefix设置值不为空,则 designatedTableName 中的表名要去掉前缀,不然会重复生成,并且表名和字段注释有误
            ArrayList<String> designatedTableName = new ArrayList<>();
    //        designatedTableName.add("user");
    //        designatedTableName.add("product");
            // 需要生成数据库文档的表前缀
            ArrayList<String> designatedTablePrefix = new ArrayList<>();
            designatedTablePrefix.add("t_");
    
            //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
            ProcessConfig processConfig = ProcessConfig.builder()
                    //根据名称指定表生成
    //                .designatedTableName(new ArrayList<>())
                    .designatedTableName(designatedTableName)
                    //根据表前缀生成
    //                .designatedTablePrefix(new ArrayList<>())
                    .designatedTablePrefix(designatedTablePrefix)
                    //根据表后缀生成
                    .designatedTableSuffix(new ArrayList<>())
                    //忽略表名
                    .ignoreTableName(ignoreTableName)
                    //忽略表前缀
                    .ignoreTablePrefix(ignorePrefix)
                    //忽略表后缀
                    .ignoreTableSuffix(ignoreSuffix).build();
            return processConfig;
        }
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170

    编写controller测试方法:

    package com.example.screwdemo.controller;
    
    import com.example.screwdemo.service.GeneratorService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 数据库表结构文档生成工具
     * @author qzz
     */
    @RestController
    @RequestMapping("/generator")
    public class GeneratorController {
    
        @Autowired
        private GeneratorService generatorService;
    
        /**
         * 生成数据库表结构文档
         */
        @RequestMapping("/generatorDocument")
        public void generatorDocument(){
            generatorService.generatorDocument();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    2.2.4 启动测试

    postman 获取浏览器输入 链接 http://localhost:8083/generator/generatorDocument,执行效果:
    在这里插入图片描述
    在这里插入图片描述

    三、完整代码

    可点击此处下载

  • 相关阅读:
    PyTorch随机生成一个布尔型张量
    【数据结构-队列】队列介绍
    cutree 算法
    【SQL语法基础】使用DDL创建数据库&数据表时需要注意什么?
    leetcode笔记(自用)
    拓扑排序-
    初学编程学习,计算机编程怎么自学,中文编程工具下载
    【归并排序】剑指 Offer 51. 数组中的逆序对
    Java常用的开发库推荐
    【正点原子FPGA连载】第二十四章 双路高速DA实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
  • 原文地址:https://blog.csdn.net/qq_26383975/article/details/126052573