hibernate 分页查询
2013-11-19 19:42
357 查看
下面例子中 实现了分页查询 另外一些方法封装好的 没有实现 有兴趣的 可以实现下 其他的功能
pageInfoBean
BasicDAO
BasicDAOImpl
BranchInfoDAOImpl
pageInfoBean
public class PagerInfoBean { private int totalNum;// 总条数 private int firstResult = 0; private int maxResults = 20; private int totalPage; /** * 总页数 * * @return */ public int getTotalPage() { if (totalNum == 0) { return 0; } else { return (totalNum + maxResults - 1) / maxResults; } } public int getTotalNum() { return totalNum; } public void setTotalNum(int totalNum) { this.totalNum = totalNum; } public int getFirstResult() { return firstResult; } public void setFirstResult(int firstResult) { this.firstResult = firstResult; } public int getMaxResults() { return maxResults; } public void setMaxResults(int maxResults) { this.maxResults = maxResults; } }
BasicDAO
public interface BasicDAO { public boolean saveOrUpdate(Object o); /** * Method queryData 查询数据 * @param hql HQL查询语句 * @return List 集合 */ public List<?> searchData(String hql); @SuppressWarnings("unchecked") public Object get(Class clz, Serializable id); @SuppressWarnings("unchecked") public boolean delete(Class clz, Serializable id); public int getRowCount(String hql); }
BasicDAOImpl
import java.io.Serializable; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import pojo.HibernateSessionFactory; import com.sun.org.apache.bcel.internal.generic.NEW; public class BasicDAOImpl implements BasicDAO { private SessionFactory sessionFactory ; public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } /** * @author * @param o * 要保存的对象 * @param boolean * 返回结果 */ public boolean saveOrUpdate(Object o) { Session session = sessionFactory.openSession(); Transaction t = null; try { t = session.beginTransaction(); session.saveOrUpdate(o); t.commit(); return true; } catch (HibernateException e) { if (t != null) { t.rollback(); } e.printStackTrace(); return false; }finally { if (session != null) { if (session.isOpen()) { session.close(); } } } } public List<?> searchData(String hql) { Session session = sessionFactory.openSession(); List<?> list = null; try { Query q = session.createQuery(hql); list = q.list(); } catch (HibernateException e) { e.printStackTrace(); }finally { if (session != null) { if (session.isOpen()) { session.close(); } } } return list; } /** * 分页查询 * @param hql * @param pager * @return */ public List<?> searchData(String hql, PagerInfoBean pager) { SessionFactory sessionFactory =HibernateSessionFactory.getSessionFactory(); Session session = sessionFactory.openSession(); List<?> list = null; try { Query q = session.createQuery(hql); list = q.setFirstResult(pager.getFirstResult()).setMaxResults( pager.getMaxResults()).list(); } catch (HibernateException e) { e.printStackTrace(); }finally { if (session != null) { if (session.isOpen()) { session.close(); } } } return list; } @SuppressWarnings("unchecked") public boolean delete(Class clz, Serializable id) { boolean result = false; Session session = sessionFactory.openSession(); Transaction t = null; try { t = session.beginTransaction(); if (this.get(clz, id)!=null) { session.delete(this.get(clz, id)); } t.commit(); result = true; } catch (HibernateException e) { // TODO Auto-generated catch block if (null != t) { t.rollback(); } result = false; e.printStackTrace(); } finally { if (session != null) { if (session.isOpen()) { session.close(); } } } return result; } @SuppressWarnings("unchecked") public Object get(Class clz, Serializable id) { Object o = null; Session session = sessionFactory.openSession(); try { o = session.get(clz, id); } catch (HibernateException e) { e.printStackTrace(); } finally { if (session != null) { if (session.isOpen()) { session.close(); } } } return o; } /** * 总记录数 */ public int getRowCount(String hql) { // TODO Auto-generated method stub int rowCount=0; Session session = sessionFactory.openSession(); try { Query q = session.createQuery(hql); if (q.uniqueResult()!=null) { rowCount = Integer.parseInt(q.uniqueResult().toString()); } } catch (HibernateException e) { e.printStackTrace(); }finally { if (session != null) { if (session.isOpen()) { session.close(); } } } return rowCount; } }
BranchInfoDAOImpl
import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import pojo.HibernateSessionFactory; import pojo.TblArea; public class BranchInfoDAOImpl extends BasicDAOImpl{ public static void main(String[] args) { PagerInfoBean pagers =new PagerInfoBean(); pagers.setFirstResult(3); pagers.setMaxResults(9); pagers.setTotalNum(10); BranchInfoDAOImpl branchInfoDAOImpl =new BranchInfoDAOImpl(); List<TblArea> branchList=branchInfoDAOImpl.getBranchInfo(pagers); for (TblArea tblArea : branchList) { String areaId =tblArea.getAreaId(); String areaName=tblArea.getAreaName(); System.out.println("areaId"+areaId); System.out.println("areaName"+areaName); } } /** * 分页查询 */ public List<TblArea> getBranchInfo(PagerInfoBean pager) { String hql = "from TblArea"; List<TblArea> branchList = (List<TblArea>) super.searchData(hql,pager); return branchList; } }
相关文章推荐
- blog的事儿
- Xcode中 xx duplicate symbols for architecture i386错误提示
- 中文报错newline in constant
- C语言中常用到的几个与系统时间相关的结构体及其说明
- UML建模之时序图(Sequence Diagram)
- struts2笔记之struts:property标签
- 转转转转——使用的Jquery技巧
- Android常用控件之悬浮窗
- jQuery 学习笔记 How jQuery Works
- jenkins+maven+git+ 邮件自动转发 持续化集成 图文教程
- 千里之行,第一步该怎样走?
- 千里之行,第一步该怎样走? 推荐
- 蒙特卡罗算法
- CentOS下用Tomcat+Zookeeper+Nginx+Solr完美搭建SolrCloud平台(三)
- 程序员技术练级攻略
- Java优先队列(PriorityQueue)示例
- Search for a Range
- 航天电磁干扰实例
- VTK三维重建(2)-根据脚部骨骼CT的三维重建和显示
- 如何在eclipse中使用log4j