分页常用,自己写了个分页的类,用来处理分页的功能,做个记录,具体如下:
/**
* 分页的工具类
* @author cjd
*
*/
public class PageUtil {
private int total; // 总记录数
private int pageSize = 10; // 每页记录数
private int totalPage = -1; // 总页码
private int pageNo = 1 ; // 当前页码
private List<?> rows;
public PageUtil() {
}
public PageUtil(int pageSize,int pageNo){
this.pageSize = pageSize;
this.pageNo = pageNo;
}
public void setPage(int pageSize,int pageNo){
this.pageSize = pageSize;
this.pageNo = pageNo;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
if(totalPage<0)
return (total + pageSize - 1) / pageSize;
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public List<?> getRows() {
return rows;
}
public void setRows(List<?> rows) {
this.rows = rows;
}
/**
* 得到上一页
*/
public int getPreviousPageNo() {
if (pageNo <= 1)
return 1;
else
return (pageNo - 1);
}
/**
* 得到下一页
*/
public int getNextPageNo() {
if (pageNo >= getTotalPage()) {
return getTotalPage() == 0 ? 1 : getTotalPage();
} else {
return pageNo + 1;
}
}
//页面分页导航的链接 方式3
public int[] getPageToolBar3() {
return getPageToolBar(3);
}
//页面分页导航的链接 方式5
public int[] getPageToolBar5() {
return getPageToolBar(5);
}
//页面分页导航的链接 方式7
public int[] getPageToolBar7() {
return getPageToolBar(7);
}
//页面分页导航的链接 方式9
public int[] getPageToolBar9() {
return getPageToolBar(9);
}
//页面分页导航的链接 方式10
public int[] getPageToolBar10() {
return getPageToolBar(10);
}
//页面分页导航的链接 方式9
public int[] getPageToolBar11() {
return getPageToolBar(11);
}
//页面分页导航的链接 方式9
public int[] getPageToolBar12() {
return getPageToolBar(12);
}
//页面分页导航的链接 方式9
public int[] getPageToolBar13() {
return getPageToolBar(13);
}
//显示页码 1,2,3,4,5 n为显示的个数
public int[] getPageToolBar(int n) {
int totalPage = getTotalPage();
int[] result = new int[n];
if(totalPage<=n || pageNo<=n/2+1){
for(int i=0;i<n;i++){
result[i] = i+1;
}
return result;
}else if(pageNo>totalPage-n/2-1){
for(int i=0;i<n;i++){
result[i] = totalPage-n+i+1;
}
return result;
}else{
for(int i=0;i<n;i++){
result[i] = pageNo-2+i;
}
return result;
}
}
}
在Service中的使用方法(HqlHelper是用来封装hql生成的类):
@Transactional
public PageUtil listByHqlHelper(HqlHelper hqlHelper,PageUtil pageUtil){
List rows = entityDao.listHql(hqlHelper.getHQL(), hqlHelper.getPatams(),pageUtil.getPageNo(),pageUtil.getPageSize());
long total = (long)entityDao.uniqueResultHql(hqlHelper.getCountHQL(), hqlHelper.getPatams());
pageUtil.setRows(rows);
pageUtil.setTotal((int)total);
return pageUtil;
}
/**
* 节目的id获取所属的视频列表
*/
@RequestMapping(value="/jk_songList.do")
private Object jk_songList(HttpServletRequest request, HttpServletResponse response,Integer programId,Integer rows,Integer page) throws Exception{
PageUtil pageUtil = programService.listSongBeanByProgramId(programId, rows, page);
JSONObject json = JSONObject.fromObject(pageUtil);
response.getWriter().write(json.toString());
return null;
}
然后在前台的使用:
页码:${pb.pageNo }/${pb.totalPages}
上一页:pageNo=${pb.previousPageNo}
下一页:pageNo=${pb.nextPageNo}
分页数据:<c:forEach var="item" items="${pb.list}" varStatus="vs">...