使用iBatis和ObjectDataSource轻松实现分页

简介:

ObjectDataSource 控件内置了对分页的支持。我们需要设置 ObjectDataSource  EnablePaging属性,然后要设置SelectMethodSelectCountMethod StartRowIndexParameterNameMaximumRowsParameterName 属性。当 EnablePaging 属性设置为 true 时,SelectParameters 集合包含两个额外的参数,一个用于请求的第一行,另一个用于请求的行数。这两个参数的名称由StartRowIndexParameterName  MaximumRowsParameterName 属性定义。SelectMethod应该返回从指定的索引处开始的请求的行数。因为数据可能不是按页大小平均分割的,所以最后一页可能包含较少的行。因此,请求的行数实际上是返回的最大行数。


上面提及的后四个属性的含义很容易理解,简单的说,我们要实现两个方法,一个是返回总的记录数(
SelectCountMethod),一个则返回当前请求页的记录(SelectMethod),SelectMethod方法至少要包含两个参数,以指定欲请求记录的起始索引和欲返回的最大行数。


SelectCountMethod
一般容易实现。而SelectMethod则比较麻烦,常见的解决方案是存储过程,这样的存储过程通常与特定表紧密耦合,难以通用。


使用
iBatis时,我们通过ISqlMapper接口来访问数据库。其中的一个方法相当有用:

IList < T >  QueryForList < T > ( string  statementName,  object  parameterObject,  int  skipResults,  int  maxResults);

 


前两个参数作查询之用,而后两个参数则与
ObjectDataSourceStartRowIndexParameterName  MaximumRowsParameterName 属性的设计不谋而合!


这样一来,我们就可以只关注查询本身了,把分页功能交由
iBatisObjectDataSource来打理。最重要的是,这个方法相当通用,也不需对查询语句作额外的处理。


我的测试数据为
20 万条,翻页所需时间在 0.7 秒左右,效果很不错了,大家有兴趣可以尝试下。


本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2007/06/21/ibatisodspaging.html,如需转载请自行联系原作者。

目录
相关文章
|
4月前
|
SQL 存储 Java
javaee分页(下)
javaee分页(下)
29 0
|
6月前
|
SQL Oracle 关系型数据库
mybatisPlus分页配置操作
mybatisPlus分页配置操作
|
数据库
EasyUI-- datagrid分页详解
分页的英文是pagination,记住这个单词,因为会经常遇见。 在EasyUI框架下,datagrid使用分页简单到令人发指,只需要2点: 1,为table启用class=“easyui-datagrid”,这样table就成为了一个数据网格。 2,为table启用pagination=“true”,表示表格启用分页功能。
787 0
EasyUI-- datagrid分页详解
|
Java
Struts分页的一个实现
在Web应用程序里,分页总让我们开发人员感到很头疼,倒不是因为技术上有多么困难,只是本来和业务没有太多关系的这么一个问题,你却得花不少功夫来处理。要是稍不留神,时不时出点问题就更郁闷了。我现在做的一个项目也到了该处理分页的时候了,感觉以前处理得都不好,所以这次有所改变,基本目标是在现有(未分页)的代码基础上,尽量少做修改,并且同样的代码可以应用于不同模块的分页。
1220 0
|
SQL Java 数据库连接
|
SQL Java 数据库
ibatis分页的两种方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 方式一:   调用它的分页方法:List result = sqlMapClient.queryForList(sqlid, parameterObject, begin, length);   方式二:   利用不同数据库的特点,把分页的条件作为参数传进去,在SQL语句处拼接。
1108 0

热门文章

最新文章