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

作者:周兆东 时间:2023-11-29 05:30:15 

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

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 运行该方法

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

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

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

GitHub代码地址:

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

来源:https://segmentfault.com/a/1190000024542624

标签:springboot,数据库文档
0
投稿

猜你喜欢

  • Java String对象使用方法详解

    2023-12-14 14:43:52
  • 深入理解Spring中bean的生命周期介绍

    2023-02-08 17:21:37
  • android自定义简单时钟

    2022-01-10 03:00:22
  • 如何使用Java redis实现发送手机验证码功能

    2023-11-26 17:25:00
  • Java8使用stream实现list中对象属性的合并(去重并求和)

    2023-06-23 13:44:40
  • 安卓(Android)开发之自定义饼状图

    2022-04-06 11:13:11
  • Java设计模式之java组合模式详解

    2022-05-02 07:52:38
  • spring多数据源配置实现方法实例分析

    2023-06-06 22:15:56
  • Java项目中获取路径的绝对路径问题和相对路径问题

    2023-07-09 13:25:01
  • Android编译出现Warning:Mapping new ns to old ns报错的解决方案

    2022-08-19 02:37:29
  • c# 多线程处理多个数据的方法

    2023-12-01 17:45:58
  • Android 中糟糕的AsyncTask

    2022-07-09 00:43:35
  • Android实现长按back键退出应用程序的方法

    2023-03-26 21:49:43
  • c#关于JWT跨域身份验证的实现代码

    2023-09-12 18:26:02
  • Android 弹出Dialog时隐藏状态栏和底部导航栏的方法

    2021-06-22 16:54:53
  • C# 对文件与文件夹的操作包括删除、移动与复制

    2023-11-16 07:20:46
  • C#获取程序文件相关信息的方法

    2021-12-12 05:34:51
  • java 解析由String类型拼接的XML文件方法

    2022-07-10 12:47:14
  • Spring Boot 详细分析Conditional自动化配置注解

    2021-11-25 21:56:14
  • java配置多个过滤器优先级以及几个常用过滤器操作

    2023-12-17 01:52:10
  • asp之家 软件编程 m.aspxhome.com