新一代國產 ORM 框架,sagacity-sqltoy-5.2.73 發版

來源: 投稿
作者: zhongxuchen
2023-10-24 13:18:00

開源地址:

更新內容

1、優化updateSaveFetch增強不同數據類型處理(感謝@rabbit的反饋)

/**
 * @TODO 適用于庫存臺賬、客戶資金賬等高并發強事務場景,一次數據庫交互實現:
 *       <p>
 *       <li>1、鎖查詢;</li>
 *       <li>2、記錄存在則修改;</li>
 *       <li>3、記錄不存在則執行insert;</li>
 *       <li>4、返回修改或插入的記錄信息</li>
 *       </p>
 * @param <T>
 * @param entity           盡量不要使用identity、sequence主鍵
 * @param updateRowHandler
 * @param uniqueProps      唯一性字段,用于做唯一性檢索,不設置則按照主鍵進行查詢
 * @return
 */
public <T extends Serializable> T updateSaveFetch(final T entity, final UpdateRowHandler updateRowHandler,final String... uniqueProps);

sqltoy-orm是JPA和超強查詢的融合體

JPA部分

  • 類似JPA的對象化CRUD、對象級聯加載和新增、更新
  • 強化update操作,提供彈性字段修改能力,不同于hibernate先load后修改,而是一次數據庫交互完成修改,確保了高并發場景下數據的準確性
  • 改進了級聯修改,提供了先刪除或者先置無效,再覆蓋的操作選項
  • 增加了updateFetch、updateSaveFetch功能,強化針對強事務高并發場景的處理,類似庫存臺賬、資金臺賬,實現一次數據庫交互,完成鎖查詢、不存在則插入、存在則修改,并返回修改后的結果
  • 增加了樹結構封裝,便于統一不同數據庫樹型結構數據的遞歸查詢
  • 支持分庫分表、支持多種主鍵策略(額外支持基于redis的產生特定規則的業務主鍵)、加密存儲、數據版本校驗
  • 提供了公共屬性賦值(創建人、修改人、創建時間、修改時間、租戶)、擴展類型處理等
  • 提供了多租戶統一過濾和賦值、提供了數據權限參數帶入和越權校驗

查詢部分

  • 極為直觀的sql編寫方式,便于從客戶端<-->代碼 雙向快速遷移,便于后期變更維護
  • 支持緩存翻譯、反向緩存匹配key代替like模糊查詢
  • 提供了跨數據庫支持能力:不同數據庫的函數自動轉換適配,多方言sql根據實際環境自動匹配、多數據庫同步測試,大幅提升了產品化能力
  • 提供了取top記錄、隨機記錄等特殊場景的查詢功能
  • 提供了最強大的分頁查詢機制:1)自動優化count語句;2)提供基于緩存的分頁優化,避免每次都執行count查詢;3)提供了獨具特色的快速分頁;4)提供了并行分頁
  • 提供了分庫分表能力
  • 提供了在管理類項目中極為價值的:分組匯總計算、行列轉換(行轉列、列轉行)、同比環比、樹形排序、樹形匯總 相關算法自然集成
  • 提供了基于查詢的層次化數據結構封裝
  • 提供了大量輔助功能:數據脫敏、格式化、條件參數預處理等

支持多種數據庫

  • 常規的mysql、oracle、db2、postgresql、 sqlserver、dm、kingbase、sqlite、h2、 oceanBase、polardb、guassdb、tidb
  • 支持分布式olap數據庫: clickhouse、StarRocks、greenplum、impala(kudu)
  • 支持elasticsearch、mongodb
  • 所有基于sql和jdbc 各類數據庫查詢

sqltoy 特點介紹:

  • sqltoy 的核心構建思想

  • sqltoy 的對比 mybatis (plus) 的核心點:查詢語句編寫、可閱讀性、可維護性

  • 對象化 crud 是基礎,但 sqltoy 有針對性的改進:update、updateSaveFetch、updateFetch 等

  • sqltoy 的緩存翻譯,大幅減少表關聯簡化 sql,讓你的查詢性能成幾何級提升

闡述sqltoy為什么秒殺mybatis(plus)

  • 極致的分頁,同樣幫助你實現查詢的性能大幅提升
  1. 快速分頁:@fast () 實現先取單頁數據然后再關聯查詢,極大提升速度
  2. 分頁優化器:page-optimize 讓分頁查詢由兩次變成 1.3~1.5 次 (用緩存實現相同查詢條件的總記錄數量在一定周期內無需重復查詢
  3. sqltoy 的分頁取總記錄的過程不是簡單的 select count (1) from (原始 sql);而是智能判斷是否變成:select count (1) from 'from 后語句 ', 并自動剔除最外層的 order by
  4. sqltoy 支持并行查詢:parallel="true",同時查詢總記錄數和單頁數據,大幅提升性能
闡述sqltoy為什么秒殺mybatis(plus)
 
  • 便利的跨數據庫統計計算:數據旋轉
闡述sqltoy為什么秒殺mybatis(plus)
  • 便利的跨數據庫統計計算:無限極分組統計 (含匯總求平均)
闡述sqltoy為什么秒殺mybatis(plus)
  • 便利的跨數據庫統計計算:同比環比
闡述sqltoy為什么秒殺mybatis(plus)
5、樹形表排序匯總

6、擴展集成

展開閱讀全文
點擊加入討論??(4) 發布并加入討論??
4 評論
0 收藏
分享
返回頂部
頂部
一本久久综合亚洲鲁鲁五月天,无翼乌口工全彩无遮挡H全彩,英语老师解开裙子坐我腿中间