對於乙個框架來說,僅有基本的curd不行,newlife.xcode同時還提供了乙個非常寬鬆的方式來使用高階查詢,以滿足各種複雜的查詢需求。
(本文同樣適用於其它任何資料訪問框架)
先上圖看乙個複雜查詢的效果圖:
這裡有8個固定的查詢條件和1個模糊查詢條件,加上多表關聯(7張表)、分頁、統計,如果用傳統的做法,這個查詢會非常的複雜。
這個頁面有xcode實現,核心查詢部分共100多行**,包括乙個查詢、乙個總記錄數分頁、兩個統計(就是業績、提成等的統計),看看高階查詢**:
可以看到,關鍵就在searchwhere裡面,另外四個方法,都是呼叫它,它的作用,就是為了構造乙個where字句。
xcode不支援多表關聯(v7開始測底不支援,以前的支援太雞肋,幾乎從未使用),這種涉及多表關聯的查詢,就需要子查詢來代替了,看看searchwhere:
可以看到,除了userrelation外,基本都是通過子查詢來實現關聯查詢。而userrelation是使用者關係表,資料比較固定,採用了二級實體快取,對它的查詢幾乎不會形成資料庫查詢,快取命中率不低於99%。
在各個小片段上使用makecondition格式化資料,保證這些**能根據當前資料庫生成相應的語句,使得系統能支援多資料庫。比如時間日期型別,在mssql是單引號邊界,在access是井號邊界。
回過頭來,看看前端頁面是怎麼做的,查詢條件區域:
這裡用了好些使用者自定義控制項,便於多個地方重用。
再看看objectdatasource是怎麼配置的:
objectdatasource負責把查詢區域的控制項跟後台查詢方法的引數,給繫結起來,並且支援分頁查詢,讓前台頁面,不需要寫**,就實現了高階分頁查詢。
並且,後台的那些查詢方法,同樣適用於非objectdatasource的前台,也適用於winform等應用系統之中!
沒有很完整的教程,只有本部落格中的點點滴滴!初衷是跟大家交流技術,讓大家都掌握這些應用開發經驗,而不是讓大家都來用xcode!有了這些東西,你也可以做出來自己的xcode!
在XCode中如何使用高階查詢
對於乙個框架來說,僅有基本的curd不行,newlife.xcode同時還提供了乙個非常寬鬆的方式來使用高階查詢,以滿足各種複雜的查詢需求。本文同樣適用於其它任何資料訪問框架 先上圖看乙個複雜查詢的效果圖 這裡有8個固定的查詢條件和1個模糊查詢條件,加上多表關聯 7張表 分頁 統計,如果用傳統的做法...
XCode中如何使用事務
廢話不多說,直接上 try之前開始事務 meta.begintrans try do something 強烈建議,盡可能做到只有一次提交事務,以免混亂 meta.commit catch 出錯了,需要回滾事務 meta.rollback 繼續向外丟擲異常 throw xcode還支援多級事務,實際...
XCode中如何使用事務
廢話不多說,直接上 try之前開始事務 meta.begintrans try do something 強烈建議,盡可能做到只有一次提交事務,以免混亂 meta.commit catch 出錯了,需要回滾事務 meta.rollback 繼續向外丟擲異常 throw xcode還支援多級事務,實際...