package com.lst.lc.page;
import java.util.List;
import org.hibernate.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
@Service
public class PageHandler<T> {
@Autowired
@Qualifier("pageDao")
private PageDao pageDao;
/**
* 获取分页page,默认排序(以时间排序)
*
* @param pageNow
* 页码
* @param pageSize
* 每页数据数量
* @param c
* 类
* @return
*/
public Page<T> getPage(int pageNow, int pageSize, Class<T> c) {
Page<T> page = initPage(pageNow, pageSize, c);
// 没有数据
if (page == null) {
Page<T> emptyPage = new Page<T>();
emptyPage.setPageNow(1);
emptyPage.setTotalPageCount(0);
return emptyPage;
} else {
int pagesize = (int) page.getPageNow();
List<T> list = pageDao.getPageList(pageSize, pagesize, c);
page.setList(list);
return page;
}
}
/**
* 获取分页page,自定义排序
*
* @param pageNow
* 页码
* @param pageSize
* 每页数据数量
* @param c
* 类
* @param query
* 自定义查询
* @return
*/
public Page<T> getPage(int pageNow, int pageSize, Class<T> c, Query query) {
Page<T> page = initPage(pageNow, pageSize, c);
if (page == null)
return null;
List<T> list = pageDao.getPageList(pageSize, pageNow, query);
page.setList(list);
return page;
}
/**
* 初始化分页page的页码相关信息
*
* @param pageNow
* 页码
* @param pageSize
* 每页数据数量
* @param c
* 类
* @return
*/
public Page<T> initPage(int pageNow, int pageSize, Class<T> c) {
// 获取全部数据数
long totalRowCount = pageDao.getTotalRowCount(c);
if (totalRowCount == 0)
return null;
if (pageSize == 0)
return null;
/*
* 计算页码数
*/
long temp = totalRowCount / pageSize;
long totalPageCount = (totalRowCount % pageSize) == 0 ? temp : temp + 1;
if (pageNow > totalPageCount) {
pageNow = 1;
}
Page<T> page = new Page<T>();
page.setPageNow(pageNow);
page.setTotalPageCount(totalPageCount);
return page;
}
}