動態配置化API接口、實現數據熱更新

自己做的一個小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)
      

目前實現了什麼?

  • 支持分頁
  • 多條件查詢
  • 批量寫入
  • 單表修改
  • 單表刪除
  • 以後慢慢擴展…
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章