ibatis分页查询mysql语句_一个数据库分页语句及ibatis下的一个使用构想

一个数据库分页语句及ibatis下的一个使用构想

先抄一个数据库分页语句。来自《面向程序员的数据库优化方案》:

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

(

) a

where 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语句和参数、返回值的属性进行校验。不知道这个写法能不能通过这个校验。

另外,按这种写法,每增加一个分页需求,就要多写一个

。最后这个分页语句肯定长的不得了。这也是个大问题。

==========================================

由于最近比较忙乱,这个构想迟迟没能进行试验。“君子欲讷言敏行”,今儿我当小人了……

©著作权归作者所有:来自51CTO博客作者winters1224的原创作品,如需转载,请注明出处,否则将追究法律责任

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值