項目實戰之服務端分頁的實現——SQL

   服務端的分頁就一個SQL語句就可以搞定,貼出代碼後自己慢慢欣賞:

CREATE Procedure AppGetEmpList   

@EID int,    

@LGID int,  

@pagesize int,  

@pageindex int    

As  

Begin   

    select count(*) count from appemployee   

       

 Select a.ID,a.EID,Case When @LGID=2052 Then Name Else eName End Name,DepTitle,JobTitle  

  ,Case When b.xEID is null Then 0 Else 1 End Fav  

  ,Case When Isnull(a.Reportto,0)=@EID Then 1 Else 0 End IsSub  

  From (select row_number() over(order by left(a.ename,1)) ID ,a.*  

        From appemployee a  

     Where a.LGID=@LGID and Isnull(a.Status,0)<>4) a  

     Left Join AppEmpFavorites b on a.EID=b.EID and b.xEID=@EID   

     where a.ID between (@pageindex-1)*@pagesize+1 and @pageindex*@pagesize  

End


分析1:

select row_number() over(order by left(a.ename,1)) ID ,a.*  

        From appemployee a  

     Where a.LGID=@LGID and Isnull(a.Status,0)<>4)

該段語句主要是將表 appemployee 賦值一個ID,便於分頁的處理,同時是按照名稱的英文名進行排序!


分析2:

Select a.ID,a.EID,Case When @LGID=2052 Then Name Else eName End Name,DepTitle,JobTitle  

  ,Case When b.xEID is null Then 0 Else 1 End Fav  

  ,Case When Isnull(a.Reportto,0)=@EID Then 1 Else 0 End IsSub  

  From (select row_number() over(order by left(a.ename,1)) ID ,a.*  

        From appemployee a  

     Where a.LGID=@LGID and Isnull(a.Status,0)<>4) a  

     Left Join AppEmpFavorites b on a.EID=b.EID and b.xEID=@EID 

該段語句是在語句1的基礎上通過EID進行過濾掉我們不需要的值


分析3:

where a.ID between (@pageindex-1)*@pagesize+1 and @pageindex*@pagesize 

該語句是通過傳遞的參數進行計算並取出指定的值返回給客戶端。


  綜上,服務端只需要利用這個思路即可實現了分頁的查詢功能,然而android客戶端在ListVIew中利用分頁的請求方式(客戶端分頁後續討論),即可對接到服務端。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章