自己做的一個小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)
-
目前實作了什么?
- 支持分頁
- 多條件查詢
- 批量寫入
- 單表修改
- 單表洗掉
- 以后慢慢擴展…
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255647.html
標籤:其他
