1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        實(shí)用!一鍵生成數(shù)據(jù)庫(kù)文檔,堪稱(chēng)數(shù)據(jù)庫(kù)界的Swagger

        共 4251字,需瀏覽 9分鐘

         ·

        2020-08-03 10:14

        最近部門(mén)訂單業(yè)務(wù)調(diào)整,收攏其他業(yè)務(wù)線的下單入口,做個(gè)統(tǒng)一大訂單平臺(tái)。需要梳理各業(yè)務(wù)線的數(shù)據(jù)表,但每個(gè)業(yè)務(wù)線庫(kù)都有近百?gòu)埡陀唵蜗嚓P(guān)的表,挨個(gè)表一個(gè)一個(gè)字段的弄腦瓜子嗡嗡的。

        為了不重復(fù) CV 操作,抱著一絲希望開(kāi)始在GitHub里找,看看有沒(méi)有什么工具可以用,結(jié)果就真的發(fā)現(xiàn)了寶藏,screw(螺絲釘),居然可以生成數(shù)據(jù)庫(kù)文檔,優(yōu)秀啊~。

        783523936c6ca8e4539c95c036995ae0.webp數(shù)據(jù)庫(kù)文檔圖

        一、數(shù)據(jù)庫(kù)支持

        MySQL

        MariaDB

        TIDB

        Oracle

        SqlServer

        PostgreSQL

        Cache DB

        二、配置

        1、pom文件

        引入screw核心包,HikariCP數(shù)據(jù)庫(kù)連接池,HikariCP號(hào)稱(chēng)性能最出色的數(shù)據(jù)庫(kù)連接池。


        <dependency>
        ????<groupId>cn.smallbun.screwgroupId>

        ????<artifactId>screw-coreartifactId>
        ????<version>1.0.3version>
        dependency>


        <dependency>
        ????<groupId>com.zaxxergroupId>

        ????<artifactId>HikariCPartifactId>
        ????<version>3.4.5version>
        dependency>


        <dependency>
        ????<groupId>mysqlgroupId>

        ????<artifactId>mysql-connector-javaartifactId>
        ????<version>8.0.20version>
        dependency>

        2、配置數(shù)據(jù)源

        配置數(shù)據(jù)源,設(shè)置?useInformationSchema?可以獲取tables注釋信息。

        spring.datasource.url=jdbc:mysql://45.93.1.5:3306/fire?useUnicode=true&characterEncoding=UTF-8&useSSL=false
        spring.datasource.username=root
        spring.datasource.password=123456
        spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
        spring.datasource.xa.properties.useInformationSchema=true?

        3、screw 核心配置

        screw有兩種執(zhí)行方式,第一種是pom文件配置,另一種是代碼執(zhí)行。

        ?
        ????<plugins>
        ????????<plugin>
        ????????????<groupId>org.springframework.bootgroupId>

        ????????????<artifactId>spring-boot-maven-pluginartifactId>
        ????????plugin>
        ????????<plugin>
        ????????????<groupId>cn.smallbun.screwgroupId>
        ????????????<artifactId>screw-maven-pluginartifactId>
        ????????????<version>1.0.3version>
        ????????????<dependencies>
        ????????????????
        ????????????????<dependency>
        ????????????????????<groupId>com.zaxxergroupId>
        ????????????????????<artifactId>HikariCPartifactId>
        ????????????????????<version>3.4.5version>
        ????????????????dependency>
        ????????????????
        ????????????????<dependency>
        ????????????????????<groupId>mysqlgroupId>
        ????????????????????<artifactId>mysql-connector-javaartifactId>
        ????????????????????<version>8.0.20version>
        ????????????????dependency>
        ????????????dependencies>
        ????????????<configuration>
        ????????????????
        ????????????????<username>rootusername>
        ????????????????
        ????????????????<password>123456password>
        ????????????????
        ????????????????<driverClassName>com.mysql.cj.jdbc.DriverdriverClassName>
        ????????????????
        ????????????????<jdbcUrl>jdbc:mysql://41.92.6.5:3306/firejdbcUrl>
        ????????????????
        ????????????????<fileType>HTMLfileType>
        ????????????????
        ????????????????<openOutputDir>falseopenOutputDir>
        ????????????????
        ????????????????<produceType>freemarkerproduceType>
        ????????????????
        ????????????????
        ????????????????
        ????????????????<description>數(shù)據(jù)庫(kù)文檔生成description>
        ????????????????
        ????????????????<version>${project.version}version>
        ????????????????
        ????????????????<title>fire數(shù)據(jù)庫(kù)文檔title>
        ????????????configuration>
        ????????????<executions>
        ????????????????<execution>
        ????????????????????<phase>compilephase>
        ????????????????????<goals>
        ????????????????????????<goal>rungoal>
        ????????????????????goals>
        ????????????????execution>
        ????????????executions>
        ????????plugin>
        ????plugins>
        </build>

        配置完以后在?maven project->screw?雙擊執(zhí)行ok。

        372c66c38633cd9af7000ff66e53ac8a.webp運(yùn)行方式

        代碼生成方式也非常簡(jiǎn)單。

        @SpringBootTest
        public?class?ScrewApplicationTests?{

        ????@Autowired
        ????ApplicationContext?applicationContext;

        ????@Test
        ????void?contextLoads()?{
        ????????DataSource?dataSourceMysql?=?applicationContext.getBean(DataSource.class);
        ????????//?生成文件配置
        ????????EngineConfig?engineConfig?=?EngineConfig.builder()
        ????????????????//?生成文件路徑,自己mac本地的地址,這里需要自己更換下路徑
        ????????????????.fileOutputDir("D:/")
        ????????????????//?打開(kāi)目錄
        ????????????????.openOutputDir(false)
        ????????????????//?文件類(lèi)型
        ????????????????.fileType(EngineFileType.HTML)
        ????????????????//?生成模板實(shí)現(xiàn)
        ????????????????.produceType(EngineTemplateType.freemarker).build();
        ????????//?生成文檔配置(包含以下自定義版本號(hào)、描述等配置連接)
        ????????Configuration?config?=?Configuration.builder()
        ????????????????.version("1.0.3")
        ????????????????.description("生成文檔信息描述")
        ????????????????.dataSource(dataSourceMysql)
        ????????????????.engineConfig(engineConfig)
        ????????????????.produceConfig(getProcessConfig())
        ????????????????.build();
        ????????//?執(zhí)行生成
        ????????new?DocumentationExecute(config).execute();
        ????}

        ????/**
        ?????*?配置想要生成的表+?配置想要忽略的表
        ?????*
        ?????*?@return?生成表配置
        ?????*/

        ????public?static?ProcessConfig?getProcessConfig()?{
        ????????//?忽略表名
        ????????List<String>?ignoreTableName?=?Arrays.asList("a",?"test_group");
        ????????//?忽略表前綴,如忽略a開(kāi)頭的數(shù)據(jù)庫(kù)表
        ????????List<String>?ignorePrefix?=?Arrays.asList("a",?"t");
        ????????//?忽略表后綴
        ????????List<String>?ignoreSuffix?=?Arrays.asList("_test",?"czb_");
        ????????return?ProcessConfig.builder()
        ????????????????//根據(jù)名稱(chēng)指定表生成
        ????????????????.designatedTableName(Arrays.asList("fire_user"))
        ????????????????//根據(jù)表前綴生成
        ????????????????.designatedTablePrefix(new?ArrayList<>())
        ????????????????//根據(jù)表后綴生成
        ????????????????.designatedTableSuffix(new?ArrayList<>())
        ????????????????//忽略表名
        ????????????????.ignoreTableName(ignoreTableName)
        ????????????????//忽略表前綴
        ????????????????.ignoreTablePrefix(ignorePrefix)
        ????????????????//忽略表后綴
        ????????????????.ignoreTableSuffix(ignoreSuffix).build();
        ????}
        }

        4、文檔格式

        screw?有?HTML、DOC、MD?三種格式的文檔。

        代碼中的修改

        .fileType(EngineFileType.HTML)

        或者pom文件

        MD</fileType>

        DOC文檔樣式

        a7b6ab83d58c74dcfd7e46ea2a1d36f0.webpDOC文檔

        HTML文檔樣式

        b42923d7ec4c1ee25674728cdf5a7463.webpHTML文檔

        MD文檔樣式

        64c216bfcbcd70f1f78c7a52a6834510.webpMD文檔

        不得不說(shuō)這個(gè)工具是真TM好用,提前完成任務(wù),有點(diǎn)傲嬌有木有!

        1399afff8fbea49042ec6a868be1bce3.webp傲嬌


        demo 的 GitHub 地址:

        https://github.com/chengxy-nds/Springboot-Notebook/tree/master/springboot-database-doc


        342e289f2d30a6d59c36f37018e0e684.webp


        原創(chuàng)不易,燃燒秀發(fā)輸出內(nèi)容,如果有一丟丟收獲,點(diǎn)個(gè)贊鼓勵(lì)一下吧!

        整理了幾百本各類(lèi)技術(shù)電子書(shū),送給小伙伴們。關(guān)注公號(hào)回復(fù)【666】自行領(lǐng)取。和一些小伙伴們建了一個(gè)技術(shù)交流群,一起探討技術(shù)、分享技術(shù)資料,旨在共同學(xué)習(xí)進(jìn)步,如果感興趣就加入我們吧!


        764af0845ef0ce51f571c61ac5d729f3.webp764af0845ef0ce51f571c61ac5d729f3.webp關(guān)注,邁開(kāi)成長(zhǎng)的第一步
        瀏覽 54
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            我要操逼网站 | www.xxxx国产 | 亚洲精品乱伦视频 | 亚洲AV成人片无码 | 国产乱伦一级黄片 | 岳今晚让你弄个够丝袜腿视频 | 国产有码 | 性视频无遮挡 | 91国偷自产中文字幕婷婷 | 伊人毛片|