ibatis分页做法

来源:互联网 发布:exo的外貌 知乎 编辑:程序博客网 时间:2024/04/29 22:52

ibatis分页做法 

以前用ibatis做分页的时候,是用的queryforList()方法,后面感觉不好,因为我看过一些ibatis的源码,感觉它好像是用resultset的滚动游标的方式实现的,这样如果数据量大会不会有问题呢?以前用jdbc的时候是用一个stringbuffer来构造oracle(我们用的是oracle,其它数据库有各自的方法)的三层钳套的sql语句的,做ibatis时语句都是写在xml配置文件里面的,不好做这种构造工作。后来想了葛简单的办法:
在domain包里面定义一个basedomain类:
public class Basedomain {

private int start;
private int end;
/**
* @return Returns the end.
*/
public int getEnd() {
return end;
}
/**
* @param end The end to set.
*/
public void setEnd(int end) {
this.end = end;
}
/**
* @return Returns the start.
*/
public int getStart() {
return start;
}
/**
* @param start The start to set.
*/
public void setStart(int start) {
this.start = start;
}

}
包含两个成员变量
start: 取数据时的起始位置
end: 取数据时的结束位置

然后各个实体类将继承这个basedomain类
然后在要分页的sql语句里面加上三层钳套的sql语句,两个rownum参数分别就是上面的start和end。
以下是一个示例:
select * from (select my_table.*,rownum as my_rownum from (
select name,password from user  order by id desc
=#start# ]]>   
这就是我的ibatis分页的办法,不知道大家觉得如何?呵呵!