<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一鍵生成數(shù)據(jù)庫文檔大利器!安利 ~

          共 7035字,需瀏覽 15分鐘

           ·

          2022-03-23 12:01

          點擊關(guān)注公眾號,Java干貨及時送達??

          簡介

          在企業(yè)級開發(fā)中、我們經(jīng)常會有編寫數(shù)據(jù)庫表結(jié)構(gòu)文檔的時間付出,從業(yè)以來,待過幾家企業(yè),關(guān)于數(shù)據(jù)庫表結(jié)構(gòu)文檔狀態(tài):要么沒有、要么有、但都是手寫、后期運維開發(fā),需要手動進行維護到文檔中,很是繁瑣、如果忘記一次維護、就會給以后工作造成很多困擾、無形中制造了很多坑留給自己和后人,于是萌生了要自己寫一個插件工具的想法。

          但由于自己前期在程序設(shè)計上沒有很多造詣,且能力偏低,有想法并不能很好實現(xiàn),隨著工作閱歷的增加,和知識的不斷儲備,終于在2020年的3月中旬開始進行編寫,4月上旬完成初版,想完善差不多在開源,但由于工作太忙,業(yè)余時間不足,沒有在進行完善,到了6月份由于工作原因、頻繁設(shè)計和更改數(shù)據(jù)庫、經(jīng)常使用自己寫的此插件、節(jié)省了很多時間,解決了很多問題 ,在僅有且不多的業(yè)余時間中、進行開源準備,于2020年6月22日,開源,歡迎大家使用、建議、并貢獻。

          關(guān)于名字,想一個太難了,好在我這個聰明的小腦瓜靈感一現(xiàn),怎么突出它的小,但重要呢?從小就學(xué)過雷鋒的螺絲釘精神,摘自雷鋒日記:雖然是細小的螺絲釘,是個細微的小齒輪,然而如果缺了它,那整個的機器就無法運轉(zhuǎn)了,慢說是缺了它,即使是一枚小螺絲釘沒擰緊,一個小齒輪略有破損,也要使機器的運轉(zhuǎn)發(fā)生故障的...

          感覺自己寫的這個工具,很有這意味,雖然很小、但是開發(fā)中缺了它還不行,于是便起名為screw(螺絲釘)。

          特點

          • 簡潔、輕量、設(shè)計良好
          • 多數(shù)據(jù)庫支持
          • 多種格式文檔
          • 靈活擴展
          • 支持自定義模板

          文檔生成支持

          • html
          • word
          • markdown

          文檔截圖

          • html

          圖片

          圖片

          • word

          圖片

          • markdwon

          圖片

          圖片

          使用方式

          普通方式

          • 引入依賴
          ????
          ????cn.smallbun.screw????
          ????screw-core????
          ????${lastVersion}????
          ?
          ????
          • 編寫代碼
          /**????
          ?*?文檔生成????
          ?*/????
          void?documentGeneration()?{????
          ???//數(shù)據(jù)源????
          ???HikariConfig?hikariConfig?=?new?HikariConfig();????
          ???hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");????
          ???hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database");????
          ???hikariConfig.setUsername("root");????
          ???hikariConfig.setPassword("password");????
          ???//設(shè)置可以獲取tables?remarks信息????
          ???hikariConfig.addDataSourceProperty("useInformationSchema",?"true");????
          ???hikariConfig.setMinimumIdle(2);????
          ???hikariConfig.setMaximumPoolSize(5);????
          ???DataSource?dataSource?=?new?HikariDataSource(hikariConfig);????
          ???//生成配置????
          ???EngineConfig?engineConfig?=?EngineConfig.builder()????
          ?????????//生成文件路徑????
          ?????????.fileOutputDir(fileOutputDir)????
          ?????????//打開目錄????
          ?????????.openOutputDir(true)????
          ?????????//文件類型????
          ?????????.fileType(EngineFileType.HTML)????
          ?????????//生成模板實現(xiàn)????
          ?????????.produceType(EngineTemplateType.freemarker)????
          ?????????//自定義文件名稱????
          ?????????.fileName("自定義文件名稱").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()????
          ?????????//指定生成邏輯、當(dāng)存在指定表、指定表前綴、指定表后綴時,將生成指定表,其余表不生成、并跳過忽略表配置?????
          ???//根據(jù)名稱指定表生成????
          ???.designatedTableName(new?ArrayList<>())????
          ???//根據(jù)表前綴生成????
          ???.designatedTablePrefix(new?ArrayList<>())????
          ???//根據(jù)表后綴生成?????
          ???.designatedTableSuffix(new?ArrayList<>())????
          ?????????//忽略表名????
          ?????????.ignoreTableName(ignoreTableName)????
          ?????????//忽略表前綴????
          ?????????.ignoreTablePrefix(ignorePrefix)????
          ?????????//忽略表后綴????
          ?????????.ignoreTableSuffix(ignoreSuffix).build();????
          ???//配置????
          ???Configuration?config?=?Configuration.builder()????
          ?????????//版本????
          ?????????.version("1.0.0")????
          ?????????//描述????
          ?????????.description("數(shù)據(jù)庫設(shè)計文檔生成")????
          ?????????//數(shù)據(jù)源????
          ?????????.dataSource(dataSource)????
          ?????????//生成配置????
          ?????????.engineConfig(engineConfig)????
          ?????????//生成配置????
          ?????????.produceConfig(processConfig)????
          ?????????.build();????
          ???//執(zhí)行生成????
          ???new?DocumentationExecute(config).execute();????
          }????

          Maven 插件

          ????
          ????????
          ????????????
          ????????????cn.smallbun.screw????
          ????????????screw-maven-plugin????
          ????????????${lastVersion}????
          ????????????????
          ????????????????????
          ????????????????????
          ????????????????????com.zaxxer????
          ????????????????????HikariCP????
          ????????????????????3.4.5????
          ????????????????
          ????
          ????????????????????
          ????????????????????
          ????????????????????mysql????
          ????????????????????mysql-connector-java????
          ????????????????????8.0.20????
          ????????????????
          ????
          ????????????
          ????
          ????????????????
          ????????????????????
          ????????????????root????
          ????????????????????
          ????????????????password????
          ????????????????????
          ????????????????com.mysql.cj.jdbc.Driver????
          ????????????????????
          ????????????????jdbc:mysql://127.0.0.1:3306/xxxx????
          ????????????????????
          ????????????????HTML????
          ????????????????????
          ????????????????false????
          ????????????????????
          ????????????????freemarker????
          ????????????????????
          ????????????????測試文檔名稱????
          ????????????????????
          ????????????????數(shù)據(jù)庫文檔生成????
          ????????????????????
          ????????????????${project.version}????
          ????????????????????
          ????????????????數(shù)據(jù)庫文檔????
          ????????????
          ????
          ????????????????
          ????????????????????
          ????????????????????compile????
          ????????????????????????
          ????????????????????????run????
          ????????????????????
          ????
          ????????????????
          ????
          ????????????
          ????
          ????????
          ????
          ????
          ????
          ????

          擴展模塊

          pojo生成功能

          功能簡介

          pojo生成功能是基于screw延伸出的擴展模塊,目前處于初步開發(fā)的狀態(tài)。在日常的開發(fā)中,經(jīng)過需求分析、建模之后,往往會先在數(shù)據(jù)庫中建表,其次在進行代碼的開發(fā)。

          那么pojo生成功能在這個階段就可以幫助大家節(jié)省一些重復(fù)勞動了。使用pojo生成功能可以直接根據(jù)數(shù)據(jù)庫生成對應(yīng)的java pojo對象。這樣后續(xù)的修改,開發(fā)都會很方便。

          數(shù)據(jù)庫支持

          • MySQL

          使用方式

          • 引入依賴
          ????
          ????cn.smallbun.screw????
          ????screw-extension????
          ????${lastVersion}????
          ?
          ????
          • 編寫代碼
          /**????
          ?*?pojo生成????
          ?*/????
          void?pojoGeneration()?{????
          ????//數(shù)據(jù)源????
          ????HikariConfig?hikariConfig?=?new?HikariConfig();????
          ????hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");????
          ????hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/screw");????
          ????hikariConfig.setUsername("screw");????
          ????hikariConfig.setPassword("screw");????
          ????//設(shè)置可以獲取tables?remarks信息????
          ????hikariConfig.addDataSourceProperty("useInformationSchema",?"true");????
          ????hikariConfig.setMinimumIdle(2);????
          ????hikariConfig.setMaximumPoolSize(5);????
          ????DataSource?dataSource?=?new?HikariDataSource(hikariConfig);????
          ????
          ????ProcessConfig?processConfig?=?ProcessConfig.builder()????
          ????????//指定生成邏輯、當(dāng)存在指定表、指定表前綴、指定表后綴時,將生成指定表,其余表不生成、并跳過忽略表配置????
          ????????//根據(jù)名稱指定表生成????
          ????????.designatedTableName(new?ArrayList<>())????
          ????????//根據(jù)表前綴生成????
          ????????.designatedTablePrefix(new?ArrayList<>())????
          ????????//根據(jù)表后綴生成????
          ????????.designatedTableSuffix(new?ArrayList<>()).build();????
          ????
          ????//設(shè)置生成pojo相關(guān)配置????
          ????PojoConfiguration?config?=?new?PojoConfiguration();????
          ????//設(shè)置文件存放路徑????
          ????config.setPath("/cn/smallbun/screw/");????
          ????//設(shè)置包名????
          ????config.setPackageName("cn.smallbun.screw");????
          ????//設(shè)置是否使用lombok????
          ????config.setUseLombok(false);????
          ????//設(shè)置數(shù)據(jù)源????
          ????config.setDataSource(dataSource);????
          ????//設(shè)置命名策略????
          ????config.setNameStrategy(new?HumpNameStrategy());????
          ????//設(shè)置表過濾邏輯????
          ????config.setProcessConfig(processConfig);????
          ????//執(zhí)行生成????
          ????new?PojoExecute(config).execute();????
          }????

          常見問題

          1.生成后文檔亂碼?

          MySQL:URL加入?characterEncoding=UTF-8

          2.Caused by: java.lang.NoSuchFieldError: VERSION_2_3_30?

          檢查項目freemarker依賴,這是由于版本過低造成的,升級版本為2.3.30即可。

          3.java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.getSchema()Ljava/lang/String;

          這是因為oracle驅(qū)動版本過低造成的,刪除或屏蔽目前驅(qū)動版本,驅(qū)動添加升級為以下版本:

          ????
          ???com.oracle.ojdbc????
          ???ojdbc8????
          ???19.3.0.0????
          ????
          ????
          ???cn.easyproject????
          ???orai18n????
          ???12.1.0.2.0????
          ????

          4.MySQL數(shù)據(jù)庫表和列字段有說明、生成文檔沒有說明?

          URL鏈接加入useInformationSchema=true即可。

          5.java.lang.AbstractMethodError: com.mysql.jdbc.JDBC4Connection.getSchema()Ljava/lang/String;

          這是因為mysql驅(qū)動版本過低造成的,升級mysql驅(qū)動版本為最新即可。

          項目地址

          https://gitee.com/leshalv/screw

          1.?真肝!2 W 字的 Linux 命令總結(jié)!

          2.?7種方式,教你提升 SpringBoot 項目的吞吐量

          3.?過濾請求絕技 !布隆過濾器與布谷鳥過濾器

          4.?最新 955 不加班的公司名單(2022版)

          最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。

          獲取方式:點“在看”,關(guān)注公眾號并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

          PS:因公眾號平臺更改了推送規(guī)則,如果不想錯過內(nèi)容,記得讀完點一下在看,加個星標,這樣每次新文章推送才會第一時間出現(xiàn)在你的訂閱列表里。

          “在看”支持小哈呀,謝謝啦??

          瀏覽 84
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  8x8x皇冠视频免费观看 | 亚洲精品色婷婷 | 久色网五月天 | 欧美v在线 | 少妇av狠狠 |