睿智sqltoy-orm-4.13.13 發版

2021-01-07 開源中國

致謝:

非常感謝多個網友的積極參與和反饋,提出這麼多的好意見,讓sqltoy越來越堅實可靠!

開源地址:

更新內容

1、優化了執行輸出,避免存在2次日誌輸出現象,導致日誌分析幹擾
2、改進批量操作的日誌輸出信息,增加了批量執行的記錄數量
3、修復特定情況下存儲過程調用bug
4、修復報表集成使用sqltoy自身的匯總計算前面的命名空間沒有處理的缺陷
5、分頁優化代碼優化

快速了解 sqltoy-orm:

sqltoy是全新一代的ORM框架,兼顧jpa對象式操作的優勢,同時極大增強了查詢功能,輔以科學的sql編寫模式、巧妙的緩存翻譯集成、極致的分頁優化以及針對大規模數據下的分庫分表、超複雜場景下的mongodb、elastic、clickhouse組合應用! sqltoy給你帶來了多種主鍵策略,除常規的UUID、sequence、identity外,還包含雪花算法和基於redis產生有規則的業務主鍵等。 sqltoy還提供了針對統計分析的:數據旋轉、無限級分組計算、同比環比等來減少開發者寫複雜sql。 sqltoy在很多方面提供了極為實用的方法,如:樹形表處理、isUnique、findTop、getRandomResult、updateFetch等等 sqltoy不走jooq全對象式、mybatis全sql式這種不是天就是地的極端路子,緊貼項目實戰發展起來的框架,讓各自技術以合理的方式應用於合理的地方!

簡要舉例介紹(因篇幅問題部分舉例):

JPA式的CRUD,但規避了其不足,提供了默認的SqlToyCRUDService(簡單的則無需寫service方法) 和 SqlToyLazyDao(開發無需自己寫Dao,只需要寫Service業務邏輯),可以了解類似於update、updateAll、saveOrUpdate等內在邏輯,減少了資料庫交互,考慮了高並發和業務對象變更的特徵!

 @Autowired private SqlToyCRUDService sqlToyCRUDService; //基於對象保存  sqlToyCRUDService.save(staffInfo); //基於對象更新(欄位值為null的不會參與變更)  sqlToyCRUDService.update(staffInfo); //深度變更,全部欄位都參與變更 sqlToyCRUDService.updateDeeply(staffInfo); //基於對象更新(制定強制修改的欄位)  sqlToyCRUDService.update(staffInfo,new String[]{"staffName","onDuty"}); //基於對象更新  sqlToyCRUDService.saveOrUpdate(staffInfo); //加載對象 sqlToyCRUDService.load(new StaffInfoVO("S190715009")); //加鎖獲取對象 sqlToyCRUDService.load(new StaffInfoVO("S190715009"),LockMode.UPGRADE); //判斷對象是否唯一 sqlToyCRUDService.isUnique(staffInfo, "staffCode"); //delete\deleteAll\updateAll\loadAll 等等不一一寫完

//單表對象查詢,直接傳參模式List<StaffInfoVO> staffVOs = sqlToyLazyDao.findEntity(StaffInfoVO.class, EntityQuery.create().where("#[staffName like ?] #[ and status=?]").values("陳", 1).lock(LockMode.UPGRADE) .orderBy("staffName").orderByDesc("createTime"));//單表查詢,對象傳參模式List<StaffInfoVO> staffVOs = sqlToyLazyDao.findEntity(StaffInfoVO.class, EntityQuery.create().where("#[staffName like :staffName] #[ and status=:status]") .values(new StaffInfoVO().setStatus(1).setEmail("test3@aliyun.com")));//代碼中鏈式查詢並刪除Long deleteCount = sqlToyLazyDao.deleteByQuery(StaffInfoVO.class, EntityQuery.create().where("status=:status").values(new StaffInfoVO().setStatus(1)));//鏈式變更Long updateCount = sqlToyLazyDao.updateByQuery(StaffInfoVO.class, EntityUpdate.create().set("staffName", "張三").where("staffName like ? and status=?").values("陳", 1));

更強大的查詢,sqltoy強調複雜查詢建議放置於xml中跟代碼分離(但是可以寫在代碼中的),不要見xml就反,請深入了解之後再反!

//sqltoy統一的規則就是直接傳遞sql語句或者對應的sqlId,並不是說sql只能寫在xml中(推薦但不絕對)findBySql(final String sqlOrSqlId, final String[] paramsNamed, final Object[] paramsValue, final Class<T> voClass)//嫌棄上面的格式化傳參也可以使用這樣鏈式查詢sqlToyLazyDao.findByQuery(new QueryExecutor("sqltoy_order_search").names("orderId", "authedOrganIds") .values(null, authedOrgans).resultType(DeviceOrderInfoVO.class));

我們對比一下mybatis的實現(很簡單的sql寫的如此讓人不願意寫!)

緩存翻譯,利用緩存減少關聯查詢,簡化sql同時大幅提升效率

相關焦點

  • 比 mybatis 強大優雅的 sqltoy-orm-4.10.5 發版了
    文章轉載自 OSCHINA 社區 [http://www.oschina.net]本文標題:比 mybatis 強大優雅的 sqltoy-orm-4.10.5 發版了本文地址:https://www.oschina.net/news/114605/sqltoy-orm-4-10-5-released開源項目地址:https://github.com/chenrenfei/sagacity-sqltoy
  • sqltoy-orm-4.13.13.1 發版,根除一些邊緣場景問題
    ```常見問題回答:1、sqltoy能打嗎?能不能打看你的境界,沒有境界:sqltoy最簡潔直觀的sql和緩存翻譯、獨特的分頁優化策略大幅幫助提升效率以及大量簡化sql的統計類策略放在你眼前念叨上一百遍你都選擇性看不見!2、sqltoy有坑嗎?
  • 優雅的 ORM 框架 sqltoy-orm-4.11.9 發版了
    因為針對常規的CRUD sqltoy跟大家並無較大差異!如果您的數據規模較大,涉及相對複雜的查詢已經影響到了用戶體驗,可以深入了解sqltoy,對你會有較大的幫助!,,給開發更多信息4、查詢返回結果支持List<Object[]>,同時支持resultType 直接給Map.class等接口(之前必須是HashMap等實現類)、5、quickvo支持yml格式的配置文件6、增強sql執行輸出#xml配置模式<bean id="sqlToyContext" name="sqlToyContext
  • 比mybatis 強大優雅的 sqltoy-orm-4.11.6 發版了
    sqltoy特性說明: 支持mysql、postgresql、db2、oracle、sqlserver、sqlite、clickhouse、elasticsearch等 具有JPA模式的CRUD功能(即CRUD無需寫sql),無需寫Dao,sqltoy提供了SqlToyLazyDao
  • sqltoy-orm-4.16.11 發版,部分功能優化
    更新內容1、修復#[and @loop(:params,' status=':params[i]'','or')] 處理後#[]中沒有參數導致被整體剔除的缺陷2、增加convertType(pageModel,classType) 便於對分頁模型整體類型轉換sqltoy
  • sqltoy-orm-4.15.7.3 發版,增強 link 功能,開放緩存管理接口
    >2、優化postgresql9.4 版本的saveOrUpdate功能(9.4 不支持insert table AS T1別名模式,剔除別名),推薦9.5+版本3、增強loadBySql、load(entity)對象類型處理,避免new VO(){{setId("");}} 雙大括號極端特殊場景下定義對象導致類型獲取錯誤。
  • 極致性能 sqltoy-orm-4.12.10 發版 - OSCHINA - 中文開源技術交流...
    根本上杜絕了sql注入問題 最科學的sql編寫方式* sqltoy的sql編寫(支持嵌套)select *from sqltoy_device_order_info t where #[種默認的非資料庫相關的主鍵策略1、shortNanoTime 22位有序安全ID,格式: 13位當前毫秒+6位納秒+3位主機ID2、nanoTimeId 26位有序安全ID,格式:15位:yyMMddHHmmssSSS+6位納秒+2位(線程Id+隨機數)+3位主機ID3、uuid:32 位uuid4、SnowflakeId 雪花算法ID5、
  • 比mybatis 強大優雅的 sqltoy-orm-4.10.5 發版了
    開源項目地址: https://github.com/chenrenfei/sagacity-sqltoy感受sqltoy
  • 極致查詢性能 sqltoy-orm-4.12.6 發版 - OSCHINA - 中文開源技術...
    /tree/master/trunk/sqltoy-nosql見test下面MongoTest.javasqltoy特點說明: 支持mysql、postgresql、db2、oracle、sqlserver、sqlite、clickhouse、elasticsearch、mongodb等
  • sqltoy-orm-4.16.16 發版,並行查詢場景增強、級聯增加排序
    -- <table name="SQLTOY_DICT_DETAIL" update-cascade="delete" load="STATUS=1" orderBy=""/> --></cascade>2、並行查詢可以自行設置每個查詢的條件參數3、優化findEntity 資料庫關鍵詞的處理4、sqltoy-boot-starter
  • sagacity-sqltoy-4.16.3 發版,融合 jpa 式對象 crud+極致查詢!
    優化convertType功能,不強制要求做exception捕獲處理快速了解 sqltoy-orm: sqltoy是全新一代的ORM框架,兼顧jpa對象式操作的優勢,同時極大增強了查詢功能,輔以科學的sql編寫模式、巧妙的緩存翻譯集成、極致的分頁優化以及針對大規模數據下的分庫分表、超複雜場景下的mongodb、elastic、
  • 極致查詢性能 sqltoy-orm-4.12.8 發版增加對國產達夢資料庫支持
    優化Query()鏈式查詢增加分頁,同時將Page()鏈式分頁代碼標註為作廢5、優化一些注釋和日誌輸出開源地址:sqltoy特點說明: 支持mysql、postgresql、db2、oracle、sqlserver、sqlite
  • sqltoy-orm-4.17.2 發版,部分功能優化
    開源地址:更新內容1、優化update(entity,forceUpdateFields) 強制屬性優先於統一欄位處理2、 為org.sagacity.sqltoy.plugins.datasource.ObtainDataSource
  • sqltoy-orm-4.17.5 發布,支持 QueryExecutor 中定義分庫分表
    (原本只支持xml中定義)//分庫dbSharding(String strategy, String... paramNames)//分表tableSharding(String strategy, String[] tables, String... paramNames)sqltoy
  • sqltoy-orm 4.13.2 發版 - OSCHINA - 中文開源技術交流社區
    鏡像下載:http://mirror.centos.org/centos/8/isos/ 主要改動 對 Yum repo 文件和 repoid 進行了更改,按照開發團隊的解釋,主要是為了使 CentOS Stream 作為獨立於 CentOS Linux 的發行版運行,以及簡化從 CentOS Linux 遷移到 CentOS S...
  • BeetlSQL 2.10.5 發布,Java Dao 工具
    錯誤#IHCGZ query.updateSelective,lambda等方法錯誤檢測<dependency>    <groupId>com.ibeetl</groupId>    <artifactId>beetlsql</artifactId>    <
  • Python資料庫ORM工具sqlalchemy的學習筆記
    3. session connection是一般使用資料庫的方式,sqlalchemy還提供了另一種操作資料庫的方式,通過session對象,session可以記錄和跟蹤數據的改變,在適當的時候提交,並且支持強大的ORM的功能,下面是基本使用 from sqlalchemy import create_engine from sqlalchemy.orm
  • BeetlSQL 2.10.18 發布,Java Dao 工具
    IIL6V 批量更新會導致連接用完,建議更新版本#IIHZF DB2和postgres 序列支持#IIHE8 使用query.updateSelective(object)方法在Linux下拼SQL錯誤#IIH7A beetlsql
  • Jfinal 數據操作模塊 db.record v 0.0.4 發布
    非orm,半對像操作。本類庫基於jfinal V1.9改造,寫一些簡單的功能的時候特別適合使用,比如要轉結數據,比如初始數據,相比orm不需要搞一堆對像,相比存sql不需要搞一些insert update。通過sql語句查詢某幾個表的數據返回 record,直接將該對像(不是寫sql)保存或者更新到一個新表中。
  • SQLAlchemy 1.3.8 發布,Python ORM 框架
    orm[orm] [bug] 修復了由於內部上下文字典中的映射器/關係狀態導致 Load 對象不可拾取的錯誤[orm] [usecasereflection] 修復了一個錯誤,即只設置「引用列」時,設置為僅按表名稱引用父表而沒有列名稱的 FOREIGN KEY 將無法正確反映發布公告:https://www.sqlalchemy.org/blog/2019/08/27/sqlalchemy-1.3.8-released/完整更新內容:https://docs.sqlalchemy.org/en/13