关于springboot:个人学习系列-Spring-Boot整合screw实现数据库文档自动生成

13次阅读

共计 4262 个字符,预计需要花费 11 分钟才能阅读完成。

有时候数据库文档须要整顿,可是只能手动的复制粘贴,心中一万只草泥马奔流而过。。。

screw

简洁好用的数据库表构造文档生成工具。

1. 创立我的项目

1.1 pom.xml

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

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

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

1.2 新建工具类 DocumentConfig.java

/**
     * 文档生成
     */
    static void documentGeneration() {
        // 数据源
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
        hikariConfig.setJdbcUrl("jdbc:mysql://IP 地址:3306/ 数据库名称");
        hikariConfig.setUsername("用户名");
        hikariConfig.setPassword("明码");
        // 设置能够获取 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)
                // 文件类型
                .fileType(EngineFileType.HTML)
                // 生成模板实现
                .produceType(EngineTemplateType.freemarker)
                // 自定义文件名称
                .fileName("test 数据库").build();

        // 疏忽表
        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");
        ProcessConfig processConfig = ProcessConfig.builder()
                // 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过疏忽表配置
                // 依据名称指定表生成
                .designatedTableName(new ArrayList<>())
                // 依据表前缀生成
                .designatedTablePrefix(new ArrayList<>())
                // 依据表后缀生成
                .designatedTableSuffix(new ArrayList<>())
                // 疏忽表名
                .ignoreTableName(ignoreTableName)
                // 疏忽表前缀
                .ignoreTablePrefix(ignorePrefix)
                // 疏忽表后缀
                .ignoreTableSuffix(ignoreSuffix).build();
        // 配置
        Configuration config = Configuration.builder()
                // 版本
                .version("1.0.0")
                // 形容
                .description("数据库设计文档生成")
                // 数据源
                .dataSource(dataSource)
                // 生成配置
                .engineConfig(engineConfig)
                // 生成配置
                .produceConfig(processConfig)
                .build();
        // 执行生成
        new DocumentationExecute(config).execute();}

1.3 运行该办法

1.4 第二种生成配置

1.4.1 先在 application.yml 外面配置数据库连贯信息:
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://IP 地址:3306/ 数据库名称
    username: 用户名
    password: 明码
    xa:
      properties:
        useInformationSchema: true
1.4.2 新建 test 办法
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 org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;

import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@SpringBootTest
public class ScrewApplicationTests {

    @Autowired
    ApplicationContext applicationContext;

    @Test
    void contextLoads() {DataSource dataSourceMysql = applicationContext.getBean(DataSource.class);

        // 生成文件配置
        EngineConfig engineConfig = EngineConfig.builder()
                // 生成文件门路,本人 mac 本地的地址,这里须要本人更换下门路
                .fileOutputDir("D:\\")
                // 关上目录
                .openOutputDir(false)
                // 文件类型
                .fileType(EngineFileType.HTML)
                // 生成模板实现
                .produceType(EngineTemplateType.freemarker).build();

        // 生成文档配置(蕴含以下自定义版本号、形容等配置连贯)Configuration config = Configuration.builder()
                .version("1.0.0")
                .description("生成文档信息形容")
                .dataSource(dataSourceMysql)
                .engineConfig(engineConfig)
                .produceConfig(getProcessConfig())
                .build();

        // 执行生成
        new DocumentationExecute(config).execute();}


    /**
     * 配置想要生成的表 + 配置想要疏忽的表
     * @return 生成表配置
     */
    public static ProcessConfig getProcessConfig(){
        // 疏忽表名
        List<String> ignoreTableName = Arrays.asList("aa","test_group");
        // 疏忽表前缀,如疏忽 a 结尾的数据库表
        List<String> ignorePrefix = Arrays.asList("a","t");
        // 疏忽表后缀
        List<String> ignoreSuffix = Arrays.asList("_test","czb_");

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

}
1.4.3 运行 test 办法生成

集体博客地址:

http://www.zhouzhaodong.xyz

GitHub 代码地址:

https://github.com/zhouzhaodo…

正文完
 0