分页应该是软件开发中常见的功能。使用HIBERNATE分页。将其提取,留个记录。上代码
PaginationVo 分页的对象。
/**
*
* @author leixiaowu
* @describe
* @date 2010-12-8
* @package cn.com.ait.energysaving.model.vo
*/
public class PaginationVo implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
/** 每页显示 */
private int pageShowNum = 50;
/** 总页数 */
private int totalPages = 0;
/** 总记录数 */
private int recordSize = 0;
/** 当前页面 */
private int currentPage = 1;
/** 要分页对象 */
private List<?> pageObjects;
public int getCurrentCursor() {
return pageShowNum * (currentPage - 1);
}
/**
* 拿到当前页面对象
*
* @return
* @throws Exception
*/
public int getCurrentPage() {
if (currentPage <= 0) {
currentPage = 1;
}
if (currentPage > getTotalPages()) {
currentPage = getTotalPages();
}
return currentPage;
}
public List<?> getPageObjects() {
return pageObjects;
}
public int getPageShowNum() {
return pageShowNum;
}
public int getRecordSize() {
return recordSize;
}
/**
* 拿到总页数
*
* @return
*/
public int getTotalPages() {
if (recordSize > 0) {
totalPages = recordSize % getPageShowNum() == 0 ? recordSize
/ getPageShowNum() : recordSize / getPageShowNum() + 1;
}
return totalPages;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public void setPageObjects(List<?> pageObjects) {
this.pageObjects = pageObjects;
}
public void setPageShowNum(int pageShowNum) {
this.pageShowNum = pageShowNum;
}
public void setRecordSize(int recordSize) {
this.recordSize = recordSize;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
}
DAO中用于查询
public List<?> getObjectsByPagination(final String sql, final int first,
final int size, final Class entityClass_) throws DaoException {
try {
return super.getHibernateTemplate().executeFind(
new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = null;
if (null == entityClass_) {
query = session.createQuery(sql);
} else {
query = session.createSQLQuery(sql).addEntity(
entityClass_);
}
query.setFirstResult(first);
query.setMaxResults(size);
return query.list();
}
});
} catch (Exception e) {
log.error(e);
this.saveLog(new LogEntity(new Date(), "", e + ""));
throw new DaoException(RCUDError.search_error + e);
}
}
Service中将条件做判断,并查询数据的多少
isnull(cpValue);
// 组装SQL
SqlCriteria sqlCriteria = createSqlCriteria(cpValue);
try {
int size = this.baseDao.getSize("select count(*) from ("
+ sqlCriteria.toString() + " )");
if (size <= 0) {
return null;
} else {
page.setRecordSize(size);
}
} catch (Exception e) {
log.error(e);
throw new SimpleException(e.getMessage());
}
@SuppressWarnings("unchecked")
List<CpFlightRouteEntity> cps = super.getObjectsByCondition(
sqlCriteria, page, CpFlightRouteEntity.class);
if (null == cps || cps.isEmpty()) {
return null;
}