SQL 之父專案:快速產生SQL 和模擬數據,大幅提升開發測試效率!
前後端全端專案By 程式設計師魚皮
製作不易,請勿商用和二次販售! ! !
線上體驗:http://sqlfather.yupi.icu
影片示範(使用教學):https://www.bilibili.com/video/BV1eP411N7B7/
如果您覺得本專案有幫助,給UP 主一個關注和三連就是最大的支持,謝謝!
前端代碼倉庫:https://github.com/liyupi/sql-father-frontend-public
後端程式碼倉庫:https://github.com/liyupi/sql-father-backend-public
️ 我在自己的程式設計知識星球內給大家詳細解讀了這個專案的創作想法+ 技術選用+ 系統設計+ 原始碼解讀+ 履歷寫法分享,如果你希望把這個專案寫到履歷表上、或深入學習,歡迎加入我的星球觀看。
專案的創作起因就是魚皮為了解決自己開發專案時反覆寫SQL 建表和造數據的麻煩,順便開源給大家一起來學習和完善~
試想:如果我做新專案的時候,不用寫建表SQL、不用造數據,能直接拿到一個造好了假數據的表,那該有多好!
有同學問為什麼專案不叫SQL Mother?那我問你為什麼繼承叫父類別?
無論你是前端、後端、測試、資料開發、資料科學,或是研究方向的同學,相信這個工具都會對你有幫助!
主要應用場景如下:
1)透過填寫可視化表單的方式,快速產生建表語句、模擬資料和程式碼,告別重複工作!
2)支援多種快捷導入方式。例如已經有現成的資料表,可以直接導入建表語句,一鍵產生模擬資料;還可以直接導入Excel 表格,快速完成建表;甚至還支援智慧型導入,輸入幾個單字就自動生成表格和資料!
3)支援多種產生模擬資料的規則。例如固定值、隨機值、正規表示式、遞增值,甚至還支援選擇詞庫來產生特定範圍內的隨機值!
4)支援詞庫、表格設計、欄位資訊共享。可以學習或參考其他同學的庫表設計,或直接使用現成的庫表和字段,一鍵生成或進行二次開發,協作萬歲!
5)可以直接使用現成的字庫來建立字典表,或作為研究用的資料集,並支援二次完善詞庫!
專案本身功能完整(分為使用者前台與管理後台)、達到上線標準、架構設計清晰、目錄結構規格。
前端用到了複雜的嵌套& 動態& 可折疊表單、程式碼編輯器;後端用到了多種主流設計模式、AOP 切面鑑權等,還是非常值得朋友們學習的。
也請大佬們請多多指教?
主要技術:
依賴函式庫:
主要技術:
依賴函式庫:
安裝依賴:
npm run install
運行:
npm run dev
打包:
npm run build
主要分享系統的整體架構和核心設計,而傳統web 開發部分不做過多介紹。
核心設計理念:將各輸入方式統一為明確的Schema,並根據Schema 產生各類內容。
架構設計圖如下,即任意輸入=> 統一Schema => 任意輸出:
系統分為以下幾個核心模組,各模組職責分明:
核心模組的程式碼都在後端core 目錄下
核心類別:TableSchemaBuilder,作用是將不同的參數統一收斂為TableSchema 物件。
包含以下方法:
其中,buildFromSql(根據SQL 產生Schema)使用了Druid 資料庫連接池自帶的語法解析器,非常強大。 (解析器這種東西一般不要自己寫,有這時間你都能做幾個專案了,寫出來還沒人家的好用)
用於保存表格和欄位的信息,結構如下:
{
"dbName" : "库名" ,
"tableName" : " test_table " ,
"tableComment" : "表注释" ,
"mockNum" : 20 ,
"fieldList" : [{
"fieldName" : " username " ,
"comment" : "用户名" ,
"fieldType" : " varchar(256) " ,
"mockType" : "随机" ,
"mockParams" : "人名" ,
"notNull" : true ,
"primaryKey" : false ,
"autoIncrement" : false
}]
}
將每種生成類型定義為一個Builder(core/builder 目錄):
其中,對於SQL 程式碼產生器( SqlBuilder),使用方言來支援不同的資料庫類型(策略模式),並使用單例模式+ 工廠模式建立方言實例。
對於Java、前端程式碼產生器(JavaCodeBuilder、FrontendCodeBuilder),使用FreeMarker 範本引擎來產生。 模板程式碼如下:
每種生成規則定義為一個Generator,使用DataGeneratorFactory(工廠模式)對多個Generator 實例進行統一的建立和管理。
使用dataFaker 庫實作隨機資料產生(RandomDataGenerator)。
使用Generex 函式庫實作正規表示式資料產生(RuleDataGenerator)。
使用門面模式聚合各種生成類型,提供統一的生成呼叫和校驗方法:
包含詞庫、表格資訊、欄位資訊分享,其實就是對這些實體的增刪改查web 服務,不多說了。
如果你希望獲得該專案的完整詳細講解,歡迎加入魚皮的程式設計知識星球。這是魚皮的程式學習圈子,我在圈子內帶大家從0 到1 分析解讀這個項目、1 對1 回答大家的問題。不只讓你也能獨立做一個、還會教你怎麼把這個專案寫到履歷上,專案經驗+ 1。
歡迎各位朋友參與貢獻,也請先仔細閱讀以下內容:
部分詞庫來源:https://github.com/fighting41love/funNLP
範例表格資訊來源:https://open.yesapi.cn/list1.html