暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

一键轻松生成数据库设计文档

小学生波波 2022-08-14
1273

1、前言介绍

今天给大家介绍一款非常还用的小工具,专门用到生成数据库设计文档的,非常简单、快捷、方便

这款工具就是screw(螺丝钉)

官网地址:https://gitee.com/leshalv/screw

2、功能说明

screw 这个工具能帮我们自动生成某个数据库所有表的详情文档,可以生成html、word、md格式,如下:

上面这只是html样式,还有word和md样式的我就不贴图了,大家可以自己试着生成看下就行了,下面我们就开始写代码

3、编码实战

1、新建项目

新建一个maven项目,名字叫做ScrewTools

2、导入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>cn.wujiangbo</groupId>
   <artifactId>ScrewTools</artifactId>
   <version>1.0-SNAPSHOT</version>

   <!--1、引入SpringBoot-->
   <parent>
       <groupId> org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.0.5.RELEASE</version>
   </parent>

   <dependencies>
       <!--web依赖-->
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>

       <!--数据库驱动-->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
       </dependency>

       <!--自动生成数据库文档:screw-->
       <dependency>
           <groupId>cn.smallbun.screw</groupId>
           <artifactId>screw-core</artifactId>
           <version>1.0.5</version>
       </dependency>

       <!--mybatis-plus-->
       <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-boot-starter</artifactId>
           <version>3.1.1</version>
       </dependency>

   </dependencies>

</project>

3、启动类

package cn.wujiangbo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* @description: 启动类
* @auth: wujiangbo(QQ1134135987)
* @date: 2022-08-01 18:34 星期一
*/
@SpringBootApplication
public class App {

   public static void main(String[] args){
       SpringApplication.run(App.class, args);
  }
}

4、工具类

package cn.wujiangbo.tools;

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 javax.sql.DataSource;
import java.util.ArrayList;

/**
* @description: 生成数据库文档工具类
* 详情参见官网:https://gitee.com/leshalv/screw
* @auth: wujiangbo(QQ1134135987)
* @date: 2022-08-01 18:36 星期一
*/
public class CreateDbDoc {

   //生成数据库文档路径
   private static String FILE_OUTPUT_DIR = "E:\\test";

   public static void main(String[] args) {
       documentGeneration();
  }

   public static void documentGeneration() {
       //数据源
       HikariConfig hikariConfig = new HikariConfig();
       hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");
       hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test");//指定数据库
       hikariConfig.setUsername("root");//数据库账号
       hikariConfig.setPassword("123456");//数据库密码
       //设置可以获取tables remarks信息
       hikariConfig.addDataSourceProperty("useInformationSchema", "true");
       hikariConfig.setMinimumIdle(2);
       hikariConfig.setMaximumPoolSize(5);
       DataSource dataSource = new HikariDataSource(hikariConfig);
       //生成配置
       EngineConfig engineConfig = EngineConfig.builder()
               //生成文件路径
              .fileOutputDir(FILE_OUTPUT_DIR)
               //生成完成后是否打开目录
              .openOutputDir(true)

               //指定生成数据库文档的文件类型
              .fileType(EngineFileType.HTML)//html格式
               //.fileType(EngineFileType.WORD)//word格式
               //.fileType(EngineFileType.MD)//md格式

               //生成模板实现
              .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.1.1")
               //文档标题
              .title("xxxxx系统数据库设计文档")
               //机构信息
              .organization("Test")
               //文档描述
              .description("Test 数据库设计文档")
               //数据源
              .dataSource(dataSource)
               //生成配置
              .engineConfig(engineConfig)
               //生成配置
              .produceConfig(processConfig)
              .build();

       //执行生成
       new DocumentationExecute(config).execute();
       System.out.println("**********************数据库文档生成完成**********************");
  }
}

只需要改一下里面连接的数据库参数即可,就可以任便的生成数据库设计文档了

是不是很方便呢,哈哈

5、测试

直接运行main方法就可以了,然后就会在指定目录中,生成数据库设计文档了,就是这么简单,赶紧用起来吧


文章转载自小学生波波,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论