文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

太方便!Spring Boot整合Screw:高效生成数据库文档

2024-11-29 19:34

关注

1. 简介

任何一个项目对于维护一份数据库表结构文档是至关重要的,总结起来有以下原因:

便于沟通和协作:

支持变更管理:

便于新成员快速上手:

提高可维护性:

在编写数据库表结构时,需要投入相当的时间,并且存在遗漏或错误的风险。而Screw是一款强大的工具,通过简单的配置,它就能够自动生成多种数据格式的数据库表结构文档,从而节省时间并确保文档的准确性和完整性。

2. Screw简介

2.1 Screw特点

2.2 支持的数据库

MySQL、MariaDB、TIDB、Oracle、SqlServer、PostgreSQL、Cache DB(2016)

2.3 支持的文档

html

目录

图片

具体表

图片

word

图片

markdown

目录

图片

具体表

图片

3. 实战案例

3.1 引入Screw依赖


  cn.smallbun.screw
  screw-core
  1.0.5

3.2 定义Screw可配置项

public class ScrewProperties {
  
  private String version ;
  
  private String title ;
  
  private String desc ;
  
  private String org ;
  
  private String orgUrl ;
  
  private boolean enabled = false ;
  private boolean autoGen = false ;
  
  private ScrewConfig config = new ScrewConfig() ;
  
  private TableConfig tables = new TableConfig() ;
  public static class TableConfig {
    
    private List designatedTables = new ArrayList<>() ;
    
    private List designatedTablePrefixs = new ArrayList<>() ;
    
    private List designatedTableSuffixs = new ArrayList<>() ;
    
    private List ignoreTables = new ArrayList<>() ;
    
    private List ignoreTablePrefixs = new ArrayList<>() ;
    
    private List ignoreTableSuffixs = new ArrayList<>() ;
  }
  public static class ScrewConfig {
    
    private String fileOutputDir ;
    
    private boolean openOutputDir = true ;
    
    private EngineFileType fileType = EngineFileType.HTML;
    
    private EngineTemplateType produceType = EngineTemplateType.freemarker ;
    
    private String fileName = "数据库设计文档" ;
  }
}

生成文档组件

@Component
public class DatabaseDocComponent {  
  private final DataSource dataSource ;
  private final ScrewProperties screwProperties ;
  public DatabaseDocComponent(DataSource dataSource, ScrewProperties screwProperties) {
    this.dataSource = dataSource ;
    this.screwProperties = screwProperties ;
  }
  public void genDocument() {
    //生成配置
    EngineConfig engineConfig = EngineConfig.builder()
      // 生成文件路径
      .fileOutputDir(screwProperties.getConfig().getFileOutputDir())
      // 打开目录
      .openOutputDir(screwProperties.getConfig().isOpenOutputDir())
      // 文件类型
      .fileType(screwProperties.getConfig().getFileType())
      // 生成模板实现
      .produceType(screwProperties.getConfig().getProduceType())
      // 自定义文件名称
        .fileName(screwProperties.getConfig().getFileName()).build();
    ProcessConfig processConfig = ProcessConfig.builder()
      //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置  
      //根据名称指定表生成
      .designatedTableName(screwProperties.getTables().getDesignatedTables())
      //根据表前缀生成
      .designatedTablePrefix(screwProperties.getTables().getDesignatedTablePrefixs())
      //根据表后缀生成  
      .designatedTableSuffix(screwProperties.getTables().getDesignatedTableSuffixs())
          //忽略表名
          .ignoreTableName(screwProperties.getTables().getIgnoreTables())
          //忽略表前缀
          .ignoreTablePrefix(screwProperties.getTables().getIgnoreTablePrefixs())
          //忽略表后缀
          .ignoreTableSuffix(screwProperties.getTables().getIgnoreTableSuffixs()).build();
    //配置
    Configuration config = Configuration.builder()
      //版本
      .version(screwProperties.getVersion())
      .title(screwProperties.getTitle())
      //描述
      .description(screwProperties.getDesc())
      .organization(screwProperties.getOrg())
      .organizationUrl(screwProperties.getOrgUrl())
      //数据源
      .dataSource(dataSource)
      //生成配置
      .engineConfig(engineConfig)
      //生成配置
      .produceConfig(processConfig)
      .build() ;
    //执行生成
    new DocumentationExecute(config).execute() ;
  }
}

3.3 测试文档生成

@SpringBootTest
public class ScrewTest {
  @Resource
  private DatabaseDocComponent doc ;
  @Test
  public void testGenDoc() {
    doc.genDocument() ;
  }
}

在你指定的位置生成了文档;

图片

图片


来源:Spring全家桶实战案例源码内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯