springboot业务开发--springboot一键生成数据库文档

简介: Screw是一个数据库文档生成工具,能自动化根据数据库表结构生成文档,减轻开发人员工作负担,支持MySQL、MariaDB、TiDB等多种数据库和HTML、Word、Markdown等格式。它依赖HikariCP数据库连接池和Freemarker模板引擎。通过在Spring Boot项目中添加相关依赖并配置,可以用代码或Maven插件方式生成文档。示例代码展示了如何在JUnit测试中使用Screw生成HTML文档。

一、解决什么问题

数据库文档是我们在企业项目开发中需要交付的文档,通常需要开发人员去手工编写。编写完成后,数据库发生变更又需要手动的进行修改,从而浪费了大量的人力。并且这种文档并没有什么技术含量,被安排做这个工作的程序员往往自己心里会有抵触情绪,悲观的预期自己在团队的位置,造成离职也是可能的。如下面的这种文档的内容:

笔者最近在github上面发现一个数据库文档生成工具:screw(螺丝钉)。该工具能够通过简单地配置,快速的根据数据库表结构进行逆向工程,将数据库表结构及字段逆向生成为文档。

二、特点

   简洁、轻量、设计良好

   多数据库支持:MySQL、MariaDB、TIDB、Oracle、 SqlServer、PostgreSQL、Cache DB

   多种格式文档: html、word、 markdwon

   灵活扩展:支持用户自定义模板和展示样式修改(freemarker模板)

三、依赖库探究

mvn中央仓库查看最新版本,将如下的maven坐标引入到Spring Boot项目中去:

   <dependency>

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

       <artifactId>screw-core</artifactId>

       <version>1.0.3</version>

   </dependency>

从maven仓库的编译依赖中可以看到,screw-core其实现依赖了如下的内容。重点关注freemarker,因为该项目是使用freemarker作为模板生成文档。

除此之外,screw使用了HikariCP作为数据库连接池,所以:

   你的Spring Boot项目需要引入HikariCP数据库连接池。

   根据你的数据库类型及版本,引入正确的JDBC驱动

四、开始造作吧

以上的工作都做好之后,我们就可以来配置文档生成参数了。实现文档生成有两种方式,一种是写代码,一种是使用maven 插件。

   我个人还是比较喜欢使用代码的当时,写一个单元测试用例就可以了,相对独立,使用方式也灵活。

   如果放在pom.xml的插件配置里面,让本就很冗长的pom.xml变的更加的冗长,不喜欢。

所以maven插件的这种方式我就不给大家演示了,直接把下面的代码Ctrl + C/V到你的src/test/java目录下。简单的修改配置,运行就可以了

   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 org.junit.jupiter.api.Test;

   

   import javax.sql.DataSource;

   import java.util.ArrayList;

   

   public class ScrewTest {

   

     @Test

     void testScrew()  {

       //数据源

       HikariConfig hikariConfig = new HikariConfig();

       hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");

       hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database");

       hikariConfig.setUsername("db-username");

       hikariConfig.setPassword("db-password");

       //设置可以获取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)

               //生成文件类型:HTML

               .fileType(EngineFileType.HTML)

               //生成模板实现

               .produceType(EngineTemplateType.freemarker)

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

   

     }

   }

在测试用例里面运行上面的代码,就会自动生成数据库文档到fileOutputDir配置目录下。

五、效果

在数据库中为每张数据表添加comment,才会有表说明字段。


相关文章
|
9天前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
14 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
9天前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
11 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
11天前
|
Rust 前端开发 关系型数据库
Tauri 开发实践 — Tauri 集成本地数据库
本文介绍了在 Tauri 框架中集成本地数据库的几种方案,包括直接绑定 SQLite、使用第三方数据库库和使用 tauri-plugin-sql-api 插件。最终选择了 tauri-plugin-sql-api,因为它集成简单、支持多种数据库类型,并且与 Tauri 框架深度整合,提升了开发效率和安全性。文章详细介绍了如何安装和使用该插件,以及如何编写核心代码实现数据库操作。
53 2
|
15天前
|
SQL Java 数据库
Springboot+spring-boot-starter-data-jdbc实现数据库的操作
本文介绍了如何使用Spring Boot的spring-boot-starter-data-jdbc依赖来操作数据库,包括添加依赖、配置数据库信息和编写基于JdbcTemplate的数据访问代码。
14 2
|
15天前
|
SQL Java 关系型数据库
Springboot引入jpa来管理数据库
Springboot引入jpa来管理数据库
17 0
Springboot引入jpa来管理数据库
|
14天前
|
SQL Java 数据库连接
springBoot+Jpa(hibernate)数据库基本操作
springBoot+Jpa(hibernate)数据库基本操作
22 0
|
8天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
58 1
|
1月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
99 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
1月前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
140 1
|
9天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用
【10月更文挑战第8天】本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,通过 Spring Initializr 创建并配置 Spring Boot 项目,实现后端 API 和安全配置。接着,使用 Ant Design Pro Vue 脚手架创建前端项目,配置动态路由和菜单,并创建相应的页面组件。最后,通过具体实践心得,分享了版本兼容性、安全性、性能调优等注意事项,帮助读者快速搭建高效且易维护的应用框架。
18 3