分页0 - 引子:根据具体条目查所在页码

今天弄详细页面左侧榜单列表和证书列表的分页,需要查找licId/resId所在的页码。

即:有1000条记录,A记录是1000条记录中的一条,1000条记录分50页,每页20条记录,怎么快速计算出A记录在那一页?假如这1000条记录有序

解决:查具体记录所在行号,根据行号算出页码,然后加载页面。

1.算行号

select num,refId from (
select ROW_NUMBER() over(order by refId desc) as num,refId
from cv..GKMyResource
where loginType=2 and userId =4  and status in (1,2,6,7)
) a where a.refId =20041
2.算页码
int rowNum = resDao.getResRowsNum(type, userId, refId);
int pageNum = 0;
if(rowNum>0){
	if(rowNum%page.getPageSize()==0){
	    pageNum = rowNum/page.getPageSize();
	}else{
	    pageNum = rowNum/page.getPageSize()+1;
	}
	page.setPageNo(pageNum);
}
3.加载
JSONObject resPageJSON = new JSONObject();
resPageJSON.put("rows",resDao.getResListForDetail(type,userId,page));
resPageJSON.put("pageNumber", page.getPageNo());
resPageJSON.put("pageSize", page.getPageSize());
resPageJSON.put("recordCount", page.getTotalRow());
resPageJSON.put("pageCount", page.getTotalPage());
resPageJSON.put("index", page.getFirstRow() + 1);
Return.put("resPageJSON",resPageJSON);

可以把事务写在SQL中,以前经常干,现在却忘了,再多写写存储过程。

你可能感兴趣的:(分页0 - 引子:根据具体条目查所在页码)