【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();
   }
}
相关推荐
东东516几秒前
果园预售系统的设计与实现spingboot+vue
前端·javascript·vue.js·spring boot·个人开发
舟舟亢亢几秒前
JVM复习笔记——下
java·jvm·笔记
rainbow68892 分钟前
Python学生管理系统:JSON持久化实战
java·前端·python
invicinble10 分钟前
对于mysql层对sql层面的知识体系的理解和把握
数据库·sql·mysql
2301_7903009613 分钟前
用Matplotlib绘制专业图表:从基础到高级
jvm·数据库·python
有味道的男人15 分钟前
1688获得商品类目调取商品榜单
java·前端·spring
独自破碎E19 分钟前
【中心扩展法】LCR_020_回文子串
java·开发语言
不光头强20 分钟前
spring boot项目欢迎页设置方式
java·spring boot·后端
4311媒体网28 分钟前
自动收藏功能的实现方法
java·开发语言
Yana.nice32 分钟前
证书格式的适用场景与核心对比
java·linux