【Java】SpringBoot+Screw轻松生成数据库设计文档

很久之前使用过一款名为screw的工具生成想要的数据库设计文档,有html跟word格式可以选择,使用起来十分便捷。

bash 复制代码
<!--screw 数据库文档生成-->
<dependency>
    <groupId>cn.smallbun.screw</groupId>
    <artifactId>screw-core</artifactId>
    <version>1.0.5</version>
</dependency>

刚好看到这么一篇相关的文章,在此给记录一下:

bash 复制代码
SpringBoot+Screw轻松生成数据库设计文档
https://mp.weixin.qq.com/s/Kk9uwqFAuWQELEeglwdxGA

当前screw支持MySQL、MariaDB、TIDB、Oracle、SqlServer、PostgreSQL、Cache DB(2016)。

附上代码,根据想要的效果进行设置生成即可!

bash 复制代码
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.HikariDataSource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@SpringBootTest
public class ScrewTest {

   @Test
   void generate() {
      // 生成文件配置
      EngineConfig engineConfig = EngineConfig.builder()
            // 生成文件路径,自己mac本地的地址,这里需要自己更换下路径
            .fileOutputDir("C:\\数据库")
            // 打开目录
            .openOutputDir(false)
            // 文件类型 HTML/WORD/MD 三种格式
            .fileType(EngineFileType.WORD)
            // 生成模板实现
            .produceType(EngineTemplateType.freemarker).build();

      //数据库名称
      String[] dbNames = {"admin"};
      for (String dbName : dbNames) {
         HikariDataSource hikariDataSource = new HikariDataSource();
         //设置数据库连接
         hikariDataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/"+dbName+"?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true");
         hikariDataSource.setUsername("root");
         hikariDataSource.setPassword("root");
         // 生成文档配置(包含以下自定义版本号、描述等配置连接)
         Configuration config = Configuration.builder()
                 .version("1.0.1")
                 .description("数据库设计文档")
                 .dataSource(hikariDataSource)
                 .engineConfig(engineConfig)
                 .produceConfig(getProcessConfig())
                 .build();

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

   }

   /**
    * 配置想要生成的表+ 配置想要忽略的表
    * @return 生成表配置
    */
   public static ProcessConfig getProcessConfig(){
      // 忽略表名
      List<String> ignoreTableName = Arrays.asList("testa_testa","testb_testb");
      // 忽略表前缀
      List<String> ignorePrefix = Arrays.asList("testa","testb");
      // 忽略表后缀
      List<String> ignoreSuffix = Arrays.asList("_testa","_testb");
      return ProcessConfig.builder()
            //根据名称指定表生成 我需要生成所有表 这里暂时不设置
            .designatedTableName(new ArrayList<>())
            //根据表前缀生成 我需要生成所有表 这里暂时不设置
            .designatedTablePrefix(new ArrayList<>())
            //根据表后缀生成 我需要生成所有表 这里暂时不设置
            .designatedTableSuffix(new ArrayList<>())
            //忽略表名
            .ignoreTableName(ignoreTableName)
            //忽略表前缀
            .ignoreTablePrefix(ignorePrefix)
            //忽略表后缀
            .ignoreTableSuffix(ignoreSuffix).build();
   }
}
相关推荐
Mr__Miss3 分钟前
微服务中引入公共拦截器
java·微服务·架构
凭君语未可13 分钟前
MySQL中COUNT(*)、COUNT(1)和COUNT(字段名)的深度剖析与实战应用
数据库·mysql
刘大浪18 分钟前
JDK17 与JDK8 共同存在一个电脑上
java
z人间防沉迷k28 分钟前
MySQL事务和索引原理
数据库·笔记·sql·mysql
秋难降41 分钟前
贪心算法:看似精明的 “短视选手”,用好了也能逆袭!💥
java·算法
阿蒙Amon44 分钟前
C#数字金额转中文大写金额:代码解析
java·mysql·c#
失乐园1 小时前
电商/物流/IoT三大场景:用MongoDB设计高扩展数据架构的最佳实践
java·后端·架构
五行星辰1 小时前
Spring AI 实战:用 Java 搞 AI,从此告别调参侠
java·后端
z人间防沉迷k1 小时前
字符串索引、幻读的解决方法
数据库·sql·mysql
知其然亦知其所以然1 小时前
不懂 Python?没关系!Easy RAG 让 Java 开发者也能玩转大模型
java·后端·llm