SpringBoot中集成screw(螺丝钉)实现数据库表结构文档生成方法

 更新时间:2024年07月26日 09:03:34   作者:霸道流氓气质  
这篇文章主要介绍了SpringBoot中集成screw(螺丝钉)实现数据库表结构文档生成,下面以连接mysql数据库并生成html格式的数据库结构文档为例,插件的使用方式除可以使用代码外,还可以使用Maven插件的方式,需要的朋友可以参考下

场景

经常会有编写数据库表结构文档的时间付出,那能否通过简单配置实现自动生成。

screw

screw (螺丝钉) 英:[skruː] ~ 简洁好用的数据库表结构文档生成工具。

https://gitee.com/leshalv/screw

特点

简洁、轻量、设计良好

多数据库支持

多种格式文档

灵活扩展

支持自定义模板

数据库支持

MySQL

MariaDB

TIDB

Oracle

SqlServer

PostgreSQL

Cache DB(2016)

H2 (开发中)

DB2 (开发中)

HSQL (开发中)

SQLite(开发中)

瀚高(开发中)

达梦 (开发中)

虚谷 (开发中)

人大金仓(开发中)

文档生成支持

html

word

markdown

实现

下面以连接mysql数据库并生成html格式的数据库结构文档为例

插件的使用方式除可以使用代码外,还可以使用Maven插件的方式。

这里考虑将其集成到单独的springboot项目中,并使用单元测试的方式需要时配置和运行。

新建springboot项目,并引入screw的依赖

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

maven仓库地址

https://mvnrepository.com/artifact/cn.smallbun.screw/screw-core

然后生成文档还需依赖

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

这里还需要连接mysql数据库以及单元测试等的依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--MySQL驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>       

新建单元测试类

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
class ScrewTest {
    @Autowired
    ApplicationContext applicationContext;
    @Test
    void createDataBaseWorld() {
        DataSource dataSourceMysql = applicationContext.getBean(DataSource.class);
        // 生成文件配置
        EngineConfig engineConfig = EngineConfig.builder()
                // 生成文件路径,自己mac本地的地址,这里需要自己更换下路径
                .fileOutputDir("D:\\test\\badao\\")
                // 打开目录
                .openOutputDir(false)
                // 文件类型
                .fileType(EngineFileType.HTML)
                // 生成模板实现
                .produceType(EngineTemplateType.freemarker).build();
        // 生成文档配置(包含以下自定义版本号、描述等配置连接)
        Configuration config = Configuration.builder()
                .version("1.0.3")
                .description("badao")
                .dataSource(dataSourceMysql)
                .engineConfig(engineConfig)
                .produceConfig(getProcessConfig())
                .build();
        // 执行生成
        new DocumentationExecute(config).execute();
    }
    /**
     * 配置想要生成的表+ 配置想要忽略的表
     * @return 生成表配置
     */
    public static ProcessConfig getProcessConfig(){
        // 忽略表名
        List<String> ignoreTableName = Arrays.asList("test_users","test1");
        // 忽略表前缀,如忽略a开头的数据库表
        List<String> ignorePrefix = Arrays.asList("qrtz","sys","gen");
        // 忽略表后缀
        List<String> ignoreSuffix = Arrays.asList("_log");
        return ProcessConfig.builder()
                //根据名称指定表生成
                .designatedTableName(new ArrayList<>())
                //根据表前缀生成
                .designatedTablePrefix(new ArrayList<>())
                //根据表后缀生成
                .designatedTableSuffix(new ArrayList<>())
                //忽略表名
                .ignoreTableName(ignoreTableName)
                //忽略表前缀
                .ignoreTablePrefix(ignorePrefix)
                //忽略表后缀
                .ignoreTableSuffix(ignoreSuffix).build();
    }
}

这里要注意引入依赖的路径。

然后这里需要在配置文件这里是yml中配置数据源

# 数据源
spring:
  application:
    name: badao-tcp-demo
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    dbcp2:
      min-idle: 5                                # 数据库连接池的最小维持连接数
      initial-size: 5                            # 初始化连接数
      max-total: 5                               # 最大连接数
      max-wait-millis: 150                       # 等待连接获取的最大超时时间

然后再上面单元测试中还可配置要忽略的表,指定前后缀等。

运行该单元测试,到配置的指定目录下查看

到此这篇关于SpringBoot中集成screw(螺丝钉)实现数据库表结构文档生成的文章就介绍到这了,更多相关SpringBoot中集成screw(螺丝钉)实现数据库表结构文档生成内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java并发计数器的深入理解

    Java并发计数器的深入理解

    这篇文章主要给大家介绍了关于Java并发计数器的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • 详解Java如何简化条件表达式

    详解Java如何简化条件表达式

    在复杂的实际业务中,往往会出现各种嵌套的条件判断逻辑。随着需求的增加,条件逻辑会变得越来越复杂。面对这种情况,简化判断逻辑就是不得不做的事情,下面为大家介绍几种方法
    2022-06-06
  • SpringBoot使用Redis实现消息队列的方法小结

    SpringBoot使用Redis实现消息队列的方法小结

    在应用中把Redis当成消息队列来使用已经屡见不鲜了,我想主要原因是当代应用十有八九都会用到 Redis,因此不用再引入其他消息队列系统,而且Redis提供了好几种实现消息队列的方法,用起来也简单,本文给大家介绍了SpringBoot使用Redis实现消息队列的方法小结
    2024-04-04
  • Mybatis-Plus处理Mysql Json类型字段的详细教程

    Mybatis-Plus处理Mysql Json类型字段的详细教程

    这篇文章主要给大家介绍了关于Mybatis-Plus处理Mysql Json类型字段的详细教程,Mybatis-Plus可以很方便地处理JSON字段,在实体类中可以使用@JSONField注解来标记JSON字段,同时在mapper.xml中使用json函数来操作JSON字段,需要的朋友可以参考下
    2024-01-01
  • SpringBoot进行模块化开发的5种组织方式小结

    SpringBoot进行模块化开发的5种组织方式小结

    模块化开发作为解决复杂性的关键策略,能够有效提升代码的可维护性、可扩展性和团队协作效率,本文将介绍SpringBoot模块化开发的5种组织方式,需要的小伙伴可以参考一下
    2025-06-06
  • Java编写计算器的常见方法实例总结

    Java编写计算器的常见方法实例总结

    这篇文章主要介绍了Java编写计算器的常见方法,结合实例形式总结分析了Java实现计算器功能的常用方法,需要的朋友可以参考下
    2016-04-04
  • SpringBoot框架集成token实现登录校验功能

    SpringBoot框架集成token实现登录校验功能

    这篇文章主要为大家详细介绍了SpringBoot框架集成token实现登录校验功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • MybatisPlus,无XML分分钟实现CRUD操作

    MybatisPlus,无XML分分钟实现CRUD操作

    这篇文章主要介绍了MybatisPlus,无XML分分钟实现CRUD操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • SpringBoot拦截器实现API安全验证的示例详解

    SpringBoot拦截器实现API安全验证的示例详解

    在开放平台和第三方集成的项目中,如何确保 API 调用的安全性和可靠性是一个重要课题,本文将详细介绍如何基于 Spring Boot 拦截器和 HMAC-SHA256 算法,构建一套轻量级但足够安全的 API 验签机制,希望对大家有所帮助
    2025-11-11
  • SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

    SpringBoot项目中报错The field screenShot exceeds&n

    这篇文章主要介绍了SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04

最新评论