hibernate分页

分页应该是软件开发中常见的功能。使用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;
  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值