还在手动整理数据库文档?试试这个工具(代码片段)

胡玉洋  胡玉洋      2023-03-25     639

关键词:

还在手动整理数据库文档?试试这个工具

简介


在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人,于是需要一个插件工具 screw[1]来维护。

screw 特点


  • 简洁、轻量、设计良好。不需要 powerdesigner 这种重量的建模工具
  • 多数据库支持 。支持市面常见的数据库类型 MySQL、Oracle、SqlServer
  • 多种格式文档。支持 MD、HTML、WORD 格式
  • 灵活扩展。支持用户自定义模板和展示样式

支持数据库类型


[✔️] MySQL

[✔️] MariaDB
[✔️] TIDB
[✔️] Oracle
[✔️] SqlServer
[✔️] PostgreSQL
[✔️] Cache DB

使用


这里以 mysql8 数据库为例子
<!--数据库文档核心依赖-->
  <dependency>
      <groupId>cn.smallbun.screw</groupId>
      <artifactId>screw-core</artifactId>
      <version>1.0.3</version>
  </dependency>
  <!-- HikariCP -->
  <dependency>
      <groupId>com.zaxxer</groupId>
      <artifactId>HikariCP</artifactId>
      <version>3.4.5</version>
  </dependency>
  <!--mysql driver-->
  <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.20</version>
  </dependency>
  1. 通过自定义代码配置文档生成
@Test
public void shouldAnswerWithTrue() 
    //数据源
    HikariConfig hikariConfig = new HikariConfig();
    hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
    hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test");
    hikariConfig.setUsername("root");
    hikariConfig.setPassword("root");
    //设置可以获取tables remarks信息
    hikariConfig.addDataSourceProperty("useInformationSchema", "true");
    hikariConfig.setMinimumIdle(2);
    hikariConfig.setMaximumPoolSize(5);
    DataSource dataSource = new HikariDataSource(hikariConfig);
    //生成配置
    EngineConfig engineConfig = EngineConfig.builder()
            //生成文件路径
            .fileOutputDir("/Users/lengleng")
            //打开目录
            .openOutputDir(true)
            //文件类型
            .fileType(EngineFileType.HTML)
            //生成模板实现
            .produceType(EngineTemplateType.freemarker).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()
            //忽略表名
            .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. 通过插件的形式生成文档
<build>
    <plugins>
        <plugin>
            <groupId>cn.smallbun.screw</groupId>
            <artifactId>screw-maven-plugin</artifactId>
            <version>1.0.2</version>
            <dependencies>
                <!-- HikariCP -->
                <dependency>
                    <groupId>com.zaxxer</groupId>
                    <artifactId>HikariCP</artifactId>
                    <version>3.4.5</version>
                </dependency>
                <!--mysql driver-->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>8.0.20</version>
                </dependency>
            </dependencies>
            <configuration>
                <!--username-->
                <username>root</username>
                <!--password-->
                <password>root</password>
                <!--driver-->
                <driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
                <!--jdbc url-->
                <jdbcUrl>jdbc:mysql://127.0.0.1:3306/test</jdbcUrl>
                <!--生成文件类型-->
                <fileType>HTML</fileType>
                <!--文件输出目录-->
                <fileOutputDir>/Users/lengleng</fileOutputDir>
                <!--打开文件输出目录-->
                <openOutputDir>false</openOutputDir>
                <!--生成模板-->
                <produceType>freemarker</produceType>
                <!--描述-->
                <description>数据库文档生成</description>
                <!--版本-->
                <version>$project.version</version>
                <!--标题-->
                <title>数据库文档</title>
            </configuration>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

[来源:https://juejin.im/post/5f1f5b57f265da22b855b1d0]

还在写curd?试试这款基于mybatis-plus的springboot代码生成器(代码片段)

...gboot代码生成器。使用这个生成器你可以在1分钟之内生成数据库表 查看详情

还在直接操作redis?赶快来试试它....(代码片段)

...ff0c;实用技术文章及时了解有些人还在直接用Jedis操作Redis数据库,但这种方式非常不方便,而且很不灵活。用SpringBoot整合Redis之后,既能非常方便地操作Redis数据库,SpringBoot又可以自由地在Lettuce或Jedis等技术之间... 查看详情

全网gis知识工具文档案例教程整理(代码片段)

全网GIS知识、工具、文档、案例、教程整理GIS麻辣香锅推荐阅读方式高精度地图BigMap、CesiumJS、GeoServer、GeoTools、GIS博文、GIS基础、GIS可视化、LeafleJS、Mapbox、MapWindow、Openlayers、QGIS、SuperMap、ThreeJS、WebGL开源博客系列学习资源或... 查看详情

整理全网优秀的api接口设计及相关优秀的接口管理在线文档生成工具(代码片段)

整理全网优秀的API接口设计及相关优秀的接口管理、在线文档生成工具一、优秀的接口设计1.1安全性问题1.1.1调用接口的先决条件-token1.1.2使用POST作为接口请求方式1.1.3客户端IP白名单1.1.4单个接口针对ip限流1.5记录接口请求日志1.... 查看详情

设计数据库er图太麻烦?不妨试试这两款工具,自动生成数据库er图!!!(代码片段)

...就写点轻松的,分享一个日常比较实用的功能『自动生成数据库ER图』自动生成ER图平常做技术方案设计的时候,如果有涉及到表结构的变更,就需要在文档中说明,还得将表结构信息写到文档中,类似如下:如果是一个新项目... 查看详情

window桌面自动整理文档工具(懒人必备)

...什么是Droplt?当您需要整理文件时,DropIt可以消除搜索和手动打开文件夹以及移动文件的繁琐工作。将一组不同的文件和文件夹拖放到浮动的DropIt映 查看详情

还在使用postman?一款集文档调试mock性能调试于一身的工具分享(代码片段)

💂个人主页:IT学习日记🤟版权:本文由【IT学习日记】原创、在CSDN首发、需要转载请联系博主💬如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦💅想寻找共同成长的小伙伴,请点击【技... 查看详情

还在纠结dapper或者efcore?不妨试试“混合orm”--repodb(代码片段)

...2个:Dapper,通过提供IDbConnection的扩展方法来查询数据库。它的优点在于可以轻松地执行参数化查询,将结果转化为对象;非常高效,在速度方面拥有micro-ORM之王的称号。EFCore,微软开源的ORM。它的优点在... 查看详情

还在手写数据库设计文档?java一键生成(代码片段)

...;文末获取源码联系🍅前言:以前我们还需要手写数据库设计文档、现在可以通过引入screw核心包来实现Java数据库文档一键生成。 查看详情

还在手写数据库设计文档?java一键生成(代码片段)

...;文末获取源码联系🍅前言:以前我们还需要手写数据库设计文档、现在可以通过引入screw核心包来实现Java数据库文档一键生成。 查看详情

java数据库表结构设计文档生成工具(screw)(代码片段)

...码示例使用方法前言 最近因为工作的需要,让我写数据库设计文档,可是我最烦文档类的工作了,之前写过一篇《mysql数据库设计文档-导出字段设计》的文章,使用的navicat工作,不过导出的格式是excel不符合... 查看详情

java数据库表结构设计文档生成工具(screw)(代码片段)

...码示例使用方法前言 最近因为工作的需要,让我写数据库设计文档,可是我最烦文档类的工作了,之前写过一篇《mysql数据库设计文档-导出字段设计》的文章,使用的navicat工作,不过导出的格式是excel不符合... 查看详情

还在手动部署springboot项目?不妨试试它,让你部署项目飞起来!

目录docker介绍安装dockerUbuntu安装dockerCentOS安装docker通过脚本安装拉取java环境创建springboot项目打包springboot到dockerdocker查看容器的日志查看log4j2输出问文件日志docker介绍Docker是一个开源的应用容器引擎,让开发者可以打包他们的应... 查看详情

janusgraph文档整理(代码片段)

目录JanusGraph调研结论IntroBasicsConfiguration数据模型(Schema)GremlinJanusGraphServer服务部署ConfiguredGraphFactoryMulti-nodeIndexingTransaction事务缓存机制(JanusGraphCache)事务日志(TransactionLog)其他常见问题技术上的限制(TechnicalLimit 查看详情

读取excel还用poi?试试这款开源工具(代码片段)

写在前面Java后端程序员应该会遇到读取Excel信息到DB等相关需求,脑海中可能突然间想起ApachePOI这个技术解决方案,但是当Excel的数据量非常大的时候,你也许发现,POI是将整个Excel的内容全部读出来放入到内存中,所以内存消耗... 查看详情

别再用visio了!试试这个比它快10倍的画图工具不香吗?(代码片段)

总有童鞋问,这个流程图图怎么绘制的,这个UML类图用什么工具做的等等,今天给大家推荐一款idea插件PlantUml,来帮助大家快速快速完成绘制。掌握之后,效率是visio等其他工具的10倍,甩的他们尾灯都看... 查看详情

还在使用swagger吗,快来试试这款强大的在线api工具

将开源小分队设为星标 精品文章第一时间读大家好,我是可爱又机灵的开源小妹。今天给大家分享一个非常好用的在线文档工具:Knife4j背景现在分工越来越明确,做项目也都是前后端分离,这样就和前端沟通越... 查看详情

nifi源码整理(代码片段)

...少,只能一点点看源码,先把源码做一个大概的整理,之后再深入研究。nifi源码nifi-api:nifi的API接口nifi-bootstrap:NiFi的启动、命令处理与监听nifi-commons:工具包data- 查看详情