screw数据库表结构文档生成工具

2023-11-23 13:30

本文主要是介绍screw数据库表结构文档生成工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、简介

        screw(螺丝钉)是一款简洁好用的数据库表结构文档生成工具。日常的开发工作中,经常会和数据库打交道,在某些场景可能会需要数据库表结构的文档,  screw(螺丝钉)是一款简洁好用的数据库表结构文档生成工具。支持多数据库、自定义模板、多种格式文档输出,具备简洁、轻量、设计良好、灵活扩展的特点。目前支持MySQL、Oracle、SqlServer、MariaDB、PostgreSQL等数据库,生成文档目前支持html、word、markdown文档格式。

二、效果图展示

三、使用方式

引入依赖jar:

<!--screw数据库表结构文档生成工具-->    <dependency>      <groupId>cn.smallbun.screw</groupId>      <artifactId>screw-core</artifactId>      <version>1.0.3</version>    </dependency>

核心代码: 

package com.wonders.common.utils;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 lombok.extern.slf4j.Slf4j;import javax.sql.DataSource;
import java.util.ArrayList;/*** @Description: TODO:screw数据库表结构文档生成工具* @Author: yyalin* 参考网站:https://blog.csdn.net/weixin_49613823/article/details/128600130* @CreateDate: 2022/4/27 14:51* @Version: V1.0*/
@Slf4j
public class ScrewUtils {public static void runScrew() {//MYSQL数据源HikariConfig hikariConfig = new HikariConfig();hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
//        //hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3308/test?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&autoReconnect=true");
//        //TIDB连接//hikariConfig.setJdbcUrl("jdbc:mysql://10.1.50.190:4000/CDR?useUnicode=true&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull");hikariConfig.setJdbcUrl("jdbc:mysql://10.1.51.215:3306/KTHDC_MDM?useUnicode=true&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull");hikariConfig.setUsername("root");hikariConfig.setPassword("123456");//ORACLE数据源
//        HikariConfig hikariConfig = new HikariConfig();
//        hikariConfig.setDriverClassName("oracle.jdbc.driver.OracleDriver");
//        hikariConfig.setJdbcUrl("jdbc:oracle:thin:@10.1.51.175:1521/jcpt");
//        hikariConfig.setUsername("CDR");
//        hikariConfig.setPassword("CDR");//设置可以获取tables remarks信息 表中文注释hikariConfig.addDataSourceProperty("useInformationSchema", "true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);DataSource dataSource = new HikariDataSource(hikariConfig);//生成配置EngineConfig engineConfig = EngineConfig.builder()//生成文件路径.fileOutputDir("D:\\\\docFile")//打开目录.openOutputDir(true)//文件类型.fileType(EngineFileType.WORD)   //word或html MD//生成模板实现.produceType(EngineTemplateType.freemarker)//自定义文件名称.build();//配置Configuration config = Configuration.builder()//版本.version("V1.0")//描述.description("数据库设计文档")//数据源.dataSource(dataSource)//生成配置.engineConfig(engineConfig)//生成配置.produceConfig(getProcessConfig()).build();//执行生成new DocumentationExecute(config).execute();}/*** 功能描述:配置生成对应表的筛选条件* @MethodName: getProcessConfig* @MethodParam: []* @Return: cn.smallbun.screw.core.process.ProcessConfig* @Author: yyalin* @CreateDate: 2022/4/27 15:15*/public static ProcessConfig getProcessConfig() {//忽略表ArrayList<String> ignoreTableName = new ArrayList<>();
//        ignoreTableName.add("message");//忽略表前缀ArrayList<String> ignorePrefix = new ArrayList<>();
//        ignorePrefix.add("act_");
//        ignorePrefix.add("flw_");//忽略表后缀ArrayList<String> ignoreSuffix = new ArrayList<>();
//        ignoreSuffix.add("_dictionary");ArrayList<String> designatedTableList = new ArrayList<>();
//        designatedTableList.add("PDCA_DISINFECTION_SUPPLY");
//        designatedTableList.add("PDCA_SURGICAL_INSTRUMENTS");
//        designatedTableList.add("PUB_DIAG_CATA_MAP");ProcessConfig processConfig = ProcessConfig.builder()//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置//根据名称指定表生成
//                .designatedTableName(new ArrayList<>()).designatedTableName(designatedTableList)//根据表前缀生成.designatedTablePrefix(new ArrayList<>())//根据表后缀生成.designatedTableSuffix(new ArrayList<>())//忽略表名.ignoreTableName(ignoreTableName)//忽略表前缀.ignoreTablePrefix(ignorePrefix)//忽略表后缀.ignoreTableSuffix(ignoreSuffix).build();return processConfig;}//临时使用public static void main(String[] args) {runScrew();}}

注意:可以通过设置忽略表名称、忽略表前缀、忽略表后缀等方式过滤不需要带出的相关表,从而达到指定导出的效果。

同样,可以与springboot更好地集成,只需将上述的参数配置在yml中即可,通过@Value("${spring.datasource.driver-class-name}")的方式获取即可。

更多优秀文章,请扫码关注个人微信公众号或搜索“程序猿小杨”添加。

这篇关于screw数据库表结构文档生成工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/418280

相关文章

Spring Validation中9个数据校验工具使用指南

《SpringValidation中9个数据校验工具使用指南》SpringValidation作为Spring生态系统的重要组成部分,提供了一套强大而灵活的数据校验机制,本文给大家介绍了Spring... 目录1. Bean Validation基础注解常用注解示例在控制器中应用2. 自定义约束验证器定义自

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

查看MySQL数据库版本的四种方法

《查看MySQL数据库版本的四种方法》查看MySQL数据库的版本信息可以通过多种方法实现,包括使用命令行工具、SQL查询语句和图形化管理工具等,以下是详细的步骤和示例代码,需要的朋友可以参考下... 目录方法一:使用命令行工具1. 使用 mysql 命令示例:方法二:使用 mysqladmin 命令示例:方

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

PyQt5+Python-docx实现一键生成测试报告

《PyQt5+Python-docx实现一键生成测试报告》作为一名测试工程师,你是否经历过手动填写测试报告的痛苦,本文将用Python的PyQt5和python-docx库,打造一款测试报告一键生成工... 目录引言工具功能亮点工具设计思路1. 界面设计:PyQt5实现数据输入2. 文档生成:python-

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获