使用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,如需转载请自行联系原作者。

目录
相关文章
|
5月前
|
SQL 存储 Java
javaee分页(下)
javaee分页(下)
30 0
|
7月前
|
SQL Oracle 关系型数据库
mybatisPlus分页配置操作
mybatisPlus分页配置操作
|
10月前
|
SQL 前端开发 Java
java后端pageHelper分页实现方法
java后端pageHelper分页实现方法
|
11月前
|
Oracle 关系型数据库 Java
|
SQL 前端开发 Java
7、PageHelper分页介绍
查询要实现分页、会存在多表关联查询,所以建议使用mybatis实现我的课程查询。 单表查询直接用Spring Data JPA,多表关联查询使用Mybatis有利于后期优化处理。
197 0
7、PageHelper分页介绍
|
Java
Struts分页的一个实现
在Web应用程序里,分页总让我们开发人员感到很头疼,倒不是因为技术上有多么困难,只是本来和业务没有太多关系的这么一个问题,你却得花不少功夫来处理。要是稍不留神,时不时出点问题就更郁闷了。我现在做的一个项目也到了该处理分页的时候了,感觉以前处理得都不好,所以这次有所改变,基本目标是在现有(未分页)的代码基础上,尽量少做修改,并且同样的代码可以应用于不同模块的分页。
1223 0
|
SQL Java 数据库连接