PaginatedList.gotoPage这个方法是在什么地方被实现的

beidoutianji 2007-11-08 02:58:10
请看如下代码:



public class BaseSqlMapDao extends SqlMapClientDaoSupport {

protected static final int PAGE_SIZE = 4;

protected SqlMapClientTemplate smcTemplate = this.getSqlMapClientTemplate();

public BaseSqlMapDao(){}

public Pagination queryForPaginatedList(String statementName,Object parameterObject,int pageNo,int totalRows)throws DataAccessException{
Pagination pagination = new Pagination(totalRows,pageNo,new ArrayList());

int pageSize= 1;
int rowsEveryPage = 10;

List list;

if(pageSize>0 && pageNo>=0){

list = smcTemplate.queryForPaginatedList(statementName,parameterObject,rowsEveryPage);

if (pageSize >= pageNo) {
((PaginatedList) list).gotoPage(pageNo-1);

} else {
((PaginatedList) list).gotoPage(pageSize-1);
}
}else{
list = smcTemplate.queryForList(statementName,parameterObject);
}
pagination.setData(list);

return pagination;
}
}

PaginatedList是一个接口,它的gotoPage方法是在什么地方被实现的?我看了ibatis及spring-framework的相关源码,都没有完全弄明白,请高手讲解一下这个过程
...全文
285 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
beidoutianji 2007-11-08
  • 打赏
  • 举报
回复
我终于弄明白了
谢谢阿甘
结果如阿甘所说
但过程果然很复杂 谢谢了
SqlMapClientTemplate.queryForPaginatedList -> SqlMapSessionImpl.queryForPaginatedList -> SqlMapExecutorDelegate.queryForPaginatedList 这是这个过程的关键,剩下的大家自己就能看明白了
散分!
beidoutianji 2007-11-08
  • 打赏
  • 举报
回复
其实我知道有两个类实现了gotoPage方法,但是我不知道具体为什么会是PaginatedDataList就不是很理解了
这个流程是什么才是我很迷惑的地方,所以请高手继续指教。再次谢谢阿甘!
还有,上述方法中list存储的真正是什么对象了?
阿甘1976 2007-11-08
  • 打赏
  • 举报
回复
实现这个接口的是PaginatedDataList类

大多数时侯框架的具体实现其实不需要了解啊,会用就OK啦.

主要实现部分如下:

public void pageTo(int idx) throws SQLException {
index = idx;

List list;

if (idx < 1) {
list = getList(idx, pageSize * 2);
} else {
list = getList(idx - 1, pageSize * 3);
}

if (list.size() < 1) {
prevPageList = new ArrayList(0);
currentPageList = new ArrayList(0);
nextPageList = new ArrayList(0);
} else {
if (idx < 1) {
prevPageList = new ArrayList(0);
if (list.size() <= pageSize) {
currentPageList = list.subList(0, list.size());
nextPageList = new ArrayList(0);
} else {
currentPageList = list.subList(0, pageSize);
nextPageList = list.subList(pageSize, list.size());
}
} else {
if (list.size() <= pageSize) {
prevPageList = list.subList(0, list.size());
currentPageList = new ArrayList(0);
nextPageList = new ArrayList(0);
} else if (list.size() <= pageSize * 2) {
prevPageList = list.subList(0, pageSize);
currentPageList = list.subList(pageSize, list.size());
nextPageList = new ArrayList(0);
} else {
prevPageList = list.subList(0, pageSize);
currentPageList = list.subList(pageSize, pageSize * 2);
nextPageList = list.subList(pageSize * 2, list.size());
}
}
}

}
beidoutianji 2007-11-08
  • 打赏
  • 举报
回复
以上代码引入的相关包是:
import com.ibatis.common.util.PaginatedList;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.dao.DataAccessException;

import java.util.ArrayList;
import java.util.List;

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧