mysql导出表结构word文档_超给力,一键生成数据库文档数据库表结构逆向工程

点击蓝色“JavaKeeper”关注我哟

加个“星标”,一起成长,做牛逼闪闪的技术人

a072d4728402e6f0fee6f06ecc3c3422.png

Keeper导读:业务迭代的时候难免有需求变动需要改表结构,或者项目开发流程不完善没有相关文档,但是技术评审或其他需要的时候,导出表的设计文档就很有必要了

来源:https://segmentfault.com/a/1190000023485195

全文共 2826 字,阅读需要 6 分钟

一、解决什么问题

数据库文档是我们在企业项目开发中需要交付的文档,通常需要开发人员去手工编写。编写完成后,数据库发生变更又需要手动的进行修改,从而浪费了大量的人力。并且这种文档并没有什么技术含量,被安排做这个工作的程序员往往自己心里会有抵触情绪,悲观的预期自己在团队的位置,造成离职也是可能的。如下面的这种文档的内容:

5c9ba1b1624a2890b496c36c5ddf627d.png

笔者最近在github上面发现一个数据库文档生成工具:screw(螺丝钉)。该工具能够通过简单地配置,快速的根据数据库表结构进行逆向工程,将数据库表结构及字段逆向生成为文档。

二、特点

  • 简洁、轻量、设计良好
  • 多数据库支持:MySQL、MariaDB、TIDB、Oracle、 SqlServer、PostgreSQL、Cache DB
  • 多种格式文档: html、word、 markdwon
  • 灵活扩展:支持用户自定义模板和展示样式修改(freemarker模板)

三、依赖库探究

mvn中央仓库查看最新版本,将如下的maven坐标引入到Spring Boot项目中去:

<dependency>
    <groupId>cn.smallbun.screwgroupId>
    <artifactId>screw-coreartifactId>
    <version>1.0.3version>
dependency>

从maven仓库的编译依赖中可以看到,screw-core其实现依赖了如下的内容。重点关注freemarker,因为该项目是使用freemarker作为模板生成文档。

540f258efc06d191789c4c96aa9945a0.png

除此之外,screw使用了HikariCP作为数据库连接池,所以:

  • 你的Spring Boot项目需要引入HikariCP数据库连接池。
  • 根据你的数据库类型及版本,引入正确的JDBC驱动

四、开始造作吧

以上的工作都做好之后,我们就可以来配置文档生成参数了。实现文档生成有两种方式,一种是写代码,一种是使用maven 插件。

  • 我个人还是比较喜欢使用代码的当时,写一个单元测试用例就可以了,相对独立,使用方式也灵活。
  • 如果放在pom.xml的插件配置里面,让本就很冗长的pom.xml变的更加的冗长,不喜欢。

所以maven插件的这种方式我就不给大家演示了,直接把下面的代码Ctrl + C/V到你的src/test/java目录下。简单的修改配置,运行就可以了

public class ScrewTest {
  
  @Test
  void testScrew()  {
    //数据源
    HikariConfig hikariConfig = new HikariConfig();
    hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
    hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database");
    hikariConfig.setUsername("db-username");
    hikariConfig.setPassword("db-password");
    //设置可以获取tables remarks信息
    hikariConfig.addDataSourceProperty("useInformationSchema", "true");
    hikariConfig.setMinimumIdle(2);
    hikariConfig.setMaximumPoolSize(5);
    DataSource dataSource = new HikariDataSource(hikariConfig);

    //生成配置
    EngineConfig engineConfig = EngineConfig.builder()
            //生成文件路径
            .fileOutputDir("d://")
            //打开目录
            .openOutputDir(true)
            //生成文件类型:HTML
            .fileType(EngineFileType.HTML)
            //生成模板实现
            .produceType(EngineTemplateType.freemarker)
            .build();

    //忽略表
    ArrayList ignoreTableName = new ArrayList<>();
    ignoreTableName.add("test_user");
    ignoreTableName.add("test_group");//忽略表前缀
    ArrayList ignorePrefix = new ArrayList<>();
    ignorePrefix.add("test_");//忽略表后缀
    ArrayList 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.0.0")//描述,文档名称
            .description("数据库设计文档生成")//数据源
            .dataSource(dataSource)//生成配置
            .engineConfig(engineConfig)//生成配置
            .produceConfig(processConfig)
            .build();//执行生成new DocumentationExecute(config).execute();
  }
}

在测试用例里面运行上面的代码,就会自动生成数据库文档到fileOutputDir配置目录下。

e0d104d8fd59926849487514e869141c.png

五、效果

719721cd512a9bbe270790f26e6b0cc1.pnge63ce4029580ba583e0be6bff5e48d0f.png

ed8632aeacb503215b81617fe2f14272.png

0af8fbcb6a1cac572043a716392bca13.png

烂了大街的 Spring 循环依赖问题,你以为自己就真会了吗

14fcc32a4d7678d9452a730af31c4a98.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值