乙個資料庫分頁語句及ibatis下的乙個使用構想

2021-09-21 00:03:09 字數 1469 閱讀 4638

先抄乙個資料庫分頁語句。來自《面向程式設計師的資料庫優化方案》:

select d.*,

rownum rn

from

(select a.seqno,a.flag

from t_atip_programparameter t

where 

t.upperprolevel ='01'

and t.prolevel ='1'

order by t.seqno) a

where rownum  < #endindex# ) d 

where rn >= #startindex#

其中:select a.seqno,a.flag

from t_atip_programparameter t

where 

t.upperprolevel ='01'

and t.prolevel ='1'

order by t.seqno

是實際的資料查詢語句。其它部分是進行分頁的語句。

********************以上抄襲,以下原創*************************

在ibatis下,我想,是不是可以這樣使用:

resultclass="object">

select d.*,

rownum rn

from(

) awhere rownum  < #endindex# ) d 

where rn >= #startindex#

resultclass="subpageinfo">

select a.seqno,a.flag

from t_atip_programparameter t

where 

t.upperprolevel ='01'

and t.prolevel ='1'

order by t.seqno

其中,pageinfo是乙個介面,其中包含realsql、endindex、startindex三個屬性。subpageinfo是pageinfo的乙個子類,還包含seqno、flag這兩個屬性。

****************************************==

這個構想的基本思路是,分頁sql裡除了實際查詢語句之外,其它的都是公用**。因此,把公用**用乙個介面封裝起來;同時,介面指出了非公用的實際查詢語句,只不過需要由子類來實現。

子類則可以專注於實際查詢語句所需的引數、返回值。

可能會有兩個問題:ibatis會對sql語句和引數、返回值的屬性進行校驗。不知道這個寫法能不能通過這個校驗。

另外,按這種寫法,每增加乙個分頁需求,就要多寫乙個

。最後這個分頁語句肯定長的不得了。這也是個大問題。

****************************************==

由於最近比較忙亂,這個構想遲遲沒能進行試驗。「君子欲訥言敏行」,今兒我當小人了……

常用資料庫分頁語句及資料庫程式設計

取出sql表中第31到40的記錄 以自動增長id為主鍵 sql server 方案1 select top 10 from t where id not in select top 30 id from t order by id orde by id sql server 方案2 select t...

資料庫分頁語句

1 mysql select from tb user order by id asc limit 10 offset 10 size small color blue limit指定每頁大小,offset指定偏移量,在程式 中可以寫成這樣 select from tb user order by ...

資料庫分頁語句

取出sql表中第31到40的記錄 以自動增長id為主鍵 sql server方案1 select top 10 from t where id not in select top 30 id from t order by id orde by id sql server方案2 select top...