一个数据库分页语句及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下,我想,是不是可以这样使用:
<select id="selectPagedList" parameterClass="PageInfo"
        resultClass="Object">
select d.*,
       rownum rn
       from
        (
            <isEqual property="realSql" compareValue="realSqlId">
               <include refid="realSqlId"/>
            </isEqual>
) a
       where rownum  < #endIndex# ) d 
where rn >= #startIndex#
</select>

<select id="realSqlId" parameterClass="SubPageInfo"
        resultClass="SubPageInfo">
select a.seqNo,a.flag
            from T_ATIP_PROGRAMPARAMETER t
            where 
                t.upperprolevel ='01'
                and t.proLevel ='1'
            order by t.seqNo
</select>

其中,PageInfo是一个接口,其中包含realSql、endIndex、startIndex三个属性。SubPageInfo是PageInfo的一个子类,还包含seqNo、flag这两个属性。
==========================================
这个构想的基本思路是,分页sql里除了实际查询语句之外,其它的都是公用代码。因此,把公用代码用一个接口封装起来;同时,接口指出了非公用的实际查询语句,只不过需要由子类来实现。
子类则可以专注于实际查询语句所需的参数、返回值。
可能会有两个问题:ibatis会对sql语句和参数、返回值的属性进行校验。不知道这个写法能不能通过这个校验。
另外,按这种写法,每增加一个分页需求,就要多写一个
<isEqual property="realSql" compareValue="realSqlId">
     <include refid="realSqlId"/>
</isEqual>。最后这个分页语句肯定长的不得了。这也是个大问题。
==========================================

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



本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/winters1224/863635,如需转载请自行联系原作者

相关文章
|
1月前
|
存储 NoSQL Redis
【Redis】利用Redis List实现数据库分页快速查询
【Redis】利用Redis List实现数据库分页快速查询
95 0
|
1月前
|
存储 缓存 NoSQL
利用Redis List实现数据库分页快速查询的有效方法
利用Redis List实现数据库分页快速查询的有效方法
|
2月前
|
SQL 人工智能 运维
数据库基础入门 — SQL排序与分页
数据库基础入门 — SQL排序与分页
25 0
|
3月前
|
存储 NoSQL Java
【Redis】利用 Redis List 实现 Java 数据库分页快速查询
在大型应用中,数据库分页查询是日常开发中不可避免的需求之一。随着数据量的不断增加,传统的数据库分页方式可能会变得效率较低。为了解决这一问题,本文将介绍如何使用 Redis List 数据结构,结合 Java 编程语言,实现高效的数据库分页查询。
112 9
|
6月前
|
SQL 数据库
数据库基础入门 — SQL排序与分页
数据库基础入门 — SQL排序与分页
41 0
|
7月前
|
SQL 关系型数据库 MySQL
数据库深分页介绍及优化方案
在前端页面显示,为了避免一次性展示全量数据,通过上下翻页或指定页码的方式查看部分数据,就像翻书一样,这就利用了 MySQL 的分页查询。
139 0
|
8月前
|
关系型数据库 MySQL 数据库
MySQL数据库中的排序与分页的操作详解
MySQL数据库中的排序与分页的操作详解
74 0
|
9月前
|
SQL Oracle 关系型数据库
MySQL数据库,从入门到精通:第五篇——MySQL排序和分页
MySQL数据库,从入门到精通:第五篇——MySQL排序和分页
81 0
|
11月前
|
小程序 JavaScript 数据库
微信小程序分页加载数据~上拉加载更多~小程序云数据库的分页加载
微信小程序分页加载数据~上拉加载更多~小程序云数据库的分页加载
285 0
|
数据库 索引
有关数据库深分页导致的查询慢的问题
有关数据库深分页导致的查询慢的问题
120 0