国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

太方便!Spring Boot整合Screw:高效生成數據庫文檔

開發 前端
文檔提供了一個清晰的數據庫數據模型視圖,讓項目團隊成員(如開發者、測試人員、運維人員等)都能理解數據如何存儲、字段的含義、數據之間的關系等。

環境:SpringBoot3.2.5 + Screw1.0.5

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依賴

<dependency>
  <groupId>cn.smallbun.screw</groupId>
  <artifactId>screw-core</artifactId>
  <version>1.0.5</version>
</dependency>

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<String> designatedTables = new ArrayList<>() ;
    /**指定生成表的前綴*/
    private List<String> designatedTablePrefixs = new ArrayList<>() ;
    /**指定生成表的后綴*/
    private List<String> designatedTableSuffixs = new ArrayList<>() ;
    /**忽略表*/
    private List<String> ignoreTables = new ArrayList<>() ;
    /**忽略表前綴*/
    private List<String> ignoreTablePrefixs = new ArrayList<>() ;
    /**忽略表后綴*/
    private List<String> 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全家桶實戰案例源碼
相關推薦

2024-09-27 15:24:15

Spring數據加解密

2020-08-06 11:45:37

數據庫文檔Swagger

2023-04-28 15:15:39

數據庫JPA

2024-11-11 10:02:37

Spring搜索數據

2020-12-24 10:20:43

文檔工具語言

2010-05-07 14:29:45

Unix--Tripw

2021-05-10 09:22:44

.NET數據庫項目

2024-07-26 10:50:51

SpringScrew數據庫

2021-06-29 17:19:44

Spring Boot集成Flyway

2024-01-10 08:17:50

HikariCP數據庫Spring

2024-03-26 08:08:08

SpringBPMN模型

2016-08-23 13:35:22

MVCEFNuGet

2025-11-21 08:08:57

2024-09-30 08:10:22

2017-12-27 15:16:35

Spring BootFlyway數據庫

2023-03-29 07:02:46

開源項目工具

2025-07-02 07:33:02

Spring倒排索引分布式

2022-12-23 08:28:42

策略模式算法

2025-05-09 07:20:02

Spring數據庫檢索

2025-06-04 02:15:00

數據庫連接方式JDBC
點贊
收藏

51CTO技術棧公眾號

亚洲一区二区三区高清| 欧美日韩精品综合在线| 亚洲国产精品免费| 九色porny自拍| 日韩精品xxxx| 香蕉久久免费电影| 一本久道久久综合中文字幕| 国产伦精一区二区三区| 免费在线观看视频a| 久久99精品国产自在现线| 精品一区二区三区四区| heyzo一区| 玖玖在线播放| 色一情一乱一伦一区二区三欧美| 九热爱视频精品视频| av在线一区不卡| 激情综合色播激情啊| av一本久道久久波多野结衣| 美国成人xxx| 91国内在线视频| 一二三四社区在线视频6| 国产精品美女久久久久久久| 少妇人妻互换不带套| 久久久精品国产99久久精品芒果| 久久综合色视频| 国产欧美日韩亚州综合 | 欧美日韩高清一区二区不卡| 影音先锋在线视频| 亚洲一区二区三区中文字幕在线观看| 东北一级毛片| 久久婷婷国产综合国色天香 | 欧美亚洲日本网站| 99热手机在线| 久久激情网站| 要久久爱电视剧全集完整观看 | 91xxxxx| 中文字幕在线观看一区二区| 中文字幕不卡在线视频极品| 欧美成人一区二区在线观看| 日韩精品久久理论片| 免费看啪啪网站| 黄色片网站在线| 久久久电影一区二区三区| 好男人www社区| 亚洲一卡二卡三卡四卡 | 瑟瑟视频在线| 亚洲欧美日韩国产中文专区| 高清一区二区三区av| 欧美亚洲国产成人精品| 国产精品最新| 国精产品一区二区| 国产成人免费在线| 国产区视频在线观看| 7777精品伊人久久久大香线蕉最新版| 欧美18av| 成人黄色影片在线| 国产真实乱对白精彩久久| 免费看国产黄色片| 在线看日本不卡| 欧亚av在线| 国产成人极品视频| www视频在线观看| 欧美肥老妇视频| 91久久奴性调教| 日韩精品一区二区三区色欲av| 亚洲视频一区二区在线观看| 韩国美女久久| 国产成人高清| 精品自在线视频| 欧美激情视频一区二区| 懂色av影视一区二区三区| 国产一区二区在线观看免费播放| 日韩欧美精品| 亚洲bt天天射| 免费一区视频| 精品中文字幕一区| 中文字幕久久亚洲| 日韩制服诱惑| 中文字幕在线观看| re久久精品视频| 精品国产乱码久久久久久蜜柚| 国模娜娜一区二区三区| 久久夜精品香蕉| 九一精品国产| 日韩av高清| 亚洲成av人影院在线观看| 综合在线一区| 亚洲午夜激情网页| 四虎影院观看视频在线观看| 国产高清久久久久| 日韩欧美电影一区二区| 国产精品亚洲一区二区三区妖精 | 91精品天堂福利在线观看| 欧美日韩一区不卡| 日韩视频免费| av影片在线一区| 亚洲一区二区三区免费观看| 亚洲日本电影在线| av高清一区| 亚洲成人www| 偷拍精品精品一区二区三区| 日韩av电影在线播放| 国产精品综合二区| 黄色小网站在线观看| 国产97在线|亚洲| 99久久免费精品高清特色大片| 午夜精彩视频| 国模吧一区二区三区| 强开小嫩苞一区二区三区网站 | 欧美美女18p| 男人的j进女人的j一区| 成人激情电影一区二区| 91蜜桃在线免费视频| caopen在线视频| 亚洲一区亚洲二区| 午夜视频99| av色综合网| 欧美日韩国产a| 精品久久97| 黄色免费网址大全| 亚洲色图五月天| 另类专区欧美蜜桃臀第一页| 综合图区亚洲| 国产一区二区丝袜高跟鞋图片| 欧美日韩一区二区三区电影| 亚洲国产综合色| 99综合久久| www.日本三级| 26uuu色噜噜精品一区| 菠萝菠萝蜜在线观看| 99久久99久久精品国产片| 亚洲综合成人网| 国产精品对白久久久久粗| 50路60路老熟妇啪啪| 欧美成人激情在线| 国产亚洲精久久久久久| 中文字幕av一区二区三区四区| 日韩av三级在线| 久久精品福利视频| 亚洲成人影音| 国产h视频在线播放| 伊人久久久久久久久久久久久| 久久精品国产免费| 爱啪啪综合导航| 亚洲第一综合| 久久精品一区二区三区不卡牛牛| 激情开心成人网| 韩日视频在线观看| 久久精品国产69国产精品亚洲 | 欧美精品在线免费播放| 久久久久九九视频| 青青操综合网| gogogo影视剧免费观看在线观看| 国产精品日日摸夜夜添夜夜av| 亚洲3atv精品一区二区三区| a视频在线观看| 色噜噜色狠狠狠狠狠综合色一| 精品国产百合女同互慰| 久久国产夜色精品鲁鲁99| 美女18一级毛片一品久道久久综合| 欧美视频在线第一页| 亚洲一二三区不卡| 伊人情人综合网| 91福利国产在线观看菠萝蜜| 中日韩在线视频| 免费不卡在线观看av| 一区二区三区不卡视频| 欧美在线不卡| 川上优av中文字幕一区二区| 老太脱裤子让老头玩xxxxx| 亚洲成人在线免费| 成人美女免费网站视频| av电影在线网| 亚洲精品欧美专区| 自拍偷拍亚洲一区| 久久国产欧美| av高清一区| 2019中文字幕在线视频| 97久久国产亚洲精品超碰热| 欧美国产日韩一区| 日韩精品在线观看网站| 亚洲激情在线激情| 东方欧美亚洲色图在线| 欧美国产一区二区| 久久电影一区| 高清国产一区二区| 蜜桃视频动漫在线播放| 厕沟全景美女厕沟精品| 欧美大胆的人体xxxx| 欧美性猛交xxxx富婆| 欧美精品欧美精品系列| 欧美激情奇米色| 清纯唯美一区二区三区| 免费特级黄毛片| 男女啪啪的视频| 成人在线观看亚洲| 视频一区欧美| 99久久久久久99| 精品一区二区电影| 国产在线a不卡|