自己做的一個小Demo,要是有人感興趣聯繫我一起擴展做大。個人想開源出來但是怕寫的不好被罵,如果有現成能實現這樣功能的框架一定告訴我,我就不寫了
DataPorters1.0
核心理念:做數據的搬運工 不需要映射實體類!不用編寫接口!
-
只做數據層: 省略數據層的單表CURD工作,不干涉其他業務接口編寫
-
熱更新: 數據庫結構發生改變時,無需修改代碼,可通過前端配置
APi
後直接獲取 -
非技術人員可配置化生成APi: 學習簡單的配置規則後,接口無需技術人員開發,只需要通過配置獲取數據即可
-
無需代碼編寫: 集成後無需編寫代碼,只需要配置數據庫鏈接即可
-
支持SQL優化:
DataPorters
只是將收到的參數動態拼接成SQL語句
,你可以隨心所欲的修改或擴展 -
簡化集成: 自動生成所需配置類,可配合
MybatisPlus
等代碼生成器,實現其他業務編寫 -
你完全可以把
DataPorters
看做一個工具類,幫你實現動態單表所有的增刪改查 (#`O′)
從何而來:
- 工作中,總是因爲:需要加寫一個簡單查詢接口、實體類需要多加一個字段、同一個表不同的字段輸出接口、用代碼生成器表結構變動還需要修改實體!不停的:測試、提交、發版。明明就是簡單數據層單表CURD爲什麼要這麼煩!
- 我開始思考一個問題,爲何不能在客戶端發起請求的時候告訴服務端:我需要哪些字段?我需要哪張表的數據?我有幾個查詢條件?我需要模糊查詢還是子查詢?我是否需要分頁?於是乎有了
DataPorters1.0
設計思路:
- 主要做了那些事?(就兩件事)
- 前端:在請求
API
中配置,所需要的數據結構 - 後端:將
Api
中的配置轉換爲SQL語句
,放入Mybatis
中執行。(有手就行)
- 前端:在請求
- 在設計初期最大的困擾就是。如何將需要的配置參數從客戶端傳遞給服務端。搞的太複雜怕是前端罵人,如何簡單優雅同時又可以保證表結構的隱私安全呢?這個時候
GraphQL
的傳遞方式給了靈感,沒錯我照着抄的。
API
配置案例:
-
單條件查詢:
-
url:http://127.0.0.1/commonGet 所攜帶的參數:{ "fields":"id,name,age", "tableName":"userinfo", "conditions":{"id":1} } 所生成的SQL:SELECT id,name,age FROM userinfo WHERE 1=1 and id=1
-
-
多條件查詢:
-
url:http://127.0.0.1/commonGet 所攜帶的參數:{ "fields":"id,name,age", "tableName":"userinfo", "conditions":{"name":{"key":"張三%","special":"like"},"age":{"key":"1,2,3,4","special":"in"}} } 所生成的SQL:SELECT id,name,age FROM userinfo WHERE 1=1 and name like '張三%' and age in (1,2,3,4)
-
目前實現了什麼?
- 支持分頁
- 多條件查詢
- 批量寫入
- 單表修改
- 單表刪除
- 以後慢慢擴展…