SpringBoot整合screw实现数据库文档自动生成的示例代码

 更新时间:2020年09月22日 14:19:32   作者:周兆东  
这篇文章主要介绍了SpringBoot整合screw实现数据库文档自动生成的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

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方法生成

GitHub代码地址:

github.com/zhouzhaodong/springboot/tree/master/spring-boot-screw

到此这篇关于SpringBoot整合screw实现数据库文档自动生成的示例代码的文章就介绍到这了,更多相关SpringBoot数据库文档自动生成内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈log4j的rootLogger及其他坑爹的地方

    浅谈log4j的rootLogger及其他坑爹的地方

    这篇文章主要介绍了log4j的rootLogger及其他坑爹的地方,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • eclipse的git插件安装、配置与使用详解

    eclipse的git插件安装、配置与使用详解

    这篇文章主要介绍了eclipse的git插件安装、配置与使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 单一职责原则_动力节点Java学院整理

    单一职责原则_动力节点Java学院整理

    这篇文章主要为大家详细介绍了单一职责原则的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • SpringSecurity自定义Form表单使用方法讲解

    SpringSecurity自定义Form表单使用方法讲解

    这篇文章主要介绍了Spring Security自定义Form表单使用方法,虽然 Spring Security 提供了默认的登录表单,实际项目里肯定是不可以直接使用的,当然 Spring Security 也提供了自定义登录表单的功能
    2023-01-01
  • SpringBoot异常处理器的使用与添加员工功能实现流程介绍

    SpringBoot异常处理器的使用与添加员工功能实现流程介绍

    设计完了登录与退出功能还只完成了冰山一角,经过测试发现,我们以url的方式来访问网站时可以直接跳过登陆页面进入后台页面,这样显然是不合理的,下面我们通过异常拦截器+boot来做到访问限制,以及实现新增员工功能,制作全局异常处理器
    2022-10-10
  • Java 8对LinkedList元素进行排序的方法详解

    Java 8对LinkedList元素进行排序的方法详解

    在Java中,LinkedList是一种基于链表的数据结构,与ArrayList相比,它在进行插入和删除操作时表现出更好的性能,然而,LinkedList的元素排序也是开发中常见的需求之一,本文介绍了Java8对LinkedList元素进行排序的方法,需要的朋友可以参考下
    2024-11-11
  • 详谈spring中bean注入无效和new创建对象的区别

    详谈spring中bean注入无效和new创建对象的区别

    这篇文章主要介绍了spring中bean注入无效和new创建对象的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • java实现哈夫曼压缩与解压缩的方法

    java实现哈夫曼压缩与解压缩的方法

    这篇文章主要介绍了java实现哈夫曼压缩与解压缩的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • java使用链表来模拟栈的入栈出栈操作实例代码

    java使用链表来模拟栈的入栈出栈操作实例代码

    这篇文章主要介绍了java 使用链表来模拟栈的入栈出栈操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • java中BigDecimal用法详解

    java中BigDecimal用法详解

    本文详细讲解了java中BigDecimal的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12

最新评论