基於ServiceStack.OrmLite框架 代碼性能、開發效率皆第一 沒有之一


基於ServiceStack.OrmLite框架 代碼性能、開發效率皆第一 沒有之一

1.此框架方便簡潔,便於學習研究。除了基本的增刪改查外,還有分頁,兼容分頁的多表查詢,同一業務處理時多次數據庫操作僅需要打開一次數據庫,反射對象映射賦值,分頁返回集合的json封裝函數,自定義對象,NLOG日志記錄,前端H+框架,sweetalert、Sortable、layer、swal等各種效果插件.....

2.本文主要介紹:
    框架基本結構;
    兼容分頁的多表查詢(僅打開一次數據庫,標准的分頁+多表sql語句)。

3.其余的自己研究學習擴展或者自行搭建框架時可參考。
    


結構圖如下:
 

 




第二張

 


=====================
下面開始簡單舉例說明多表查詢分頁在此項目的應用:
查詢以ajax形式:
流程為: ajax請求,查詢參數為表單序列化,請求獲取返回結果集合json,調用通用js函數進行html拼接,利用laypage生成分頁代碼。
效果圖為:

 


下圖為界面的html和js:name值和返回的json對象key一致,這樣就可以智能填充數據value,其中角色是多表查詢出來的,下面介紹后台代碼的時候會說到。

 


 



上面圖為ajax加載分頁數據,函數參數_pageIndex為當前頁,初始加載傳入1即可,其中fillTableData函數為填充table數據,
此函數可以通用,根據上面html 的table中th 的name值來自動匹配json中的key取value填充數據。

 


好了來看請求的控制器代碼

 



沒錯就兩行,此處僅有兩行代碼,有木有! (好了 大招在logic業務邏輯層里面)。

 


 這個函數主要是處理查詢條件的,由於每個業務模塊的查詢字段和條件不一,所以還得手寫,只不過這里是動態拼接表達式 而非sql語句。之所以可以這樣干是因為需要一些引用:看下圖

 


 那么真正的獲取數據集合及多表查詢(角色名稱)在下面這個函數GetPageList,注意看下面代碼的注釋

 


 注意有個自定義對象 PagerSYSUser,下面給出定義

 


生成的數據庫訪問sql語句(多表+分頁)(本例使用的oracle)

 

 


  。。。。。基本完工=======================================
值得注意的小地方有:

 此處兩種寫法,如果使用第一種寫法的話,省去多表關聯,那么就得在對象里的屬性指定: 如下圖

 


 其中返回集合對象json序列化方法:

 


 在這里
 

 

 



======實用: 多表指定字段查詢:==================
這里可以指定多表的查詢中 指定每個表的指定字段查詢,返回結果的對象屬性和其屬性一致即可自動賦值。

 



生成的sql如: 只查詢了W_SYSUSER表的ADDRESS和W_ROLE表的RNAME兩個字段。

 




補充:多表查詢字段時候,如果兩個表有同名字段,那么返回對象的屬性命名寫法為{表名}{字段名}如下例:

注意表名首字母大寫,后面一定小寫,然后字段名的首字母一定大寫,后面小寫!
那么生成的sql語句為: N_COACH.NAME as N_coachName ,N_STUDENT.NAME as N_studentName, 

 



 




框架源碼 :
(之前網盤鏈接失效,源碼找作者)

servicestack.ormlite
https://github.com/ServiceStack/ServiceStack.OrmLite ;

 


 

=============2016-9-21 更新 在servicestack內使用dapper 支持sql 提高靈活性


 


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM