1 com.dao包下 2 import java.io.Serializable; 3 import java.util.List; 4 5 import com.page.PageInfo; 6 import com.vo.Categorys; 7 8 public interface Dao { 9 //增加 10 public void add(Object object); 11 //删除 12 public void delete(Object object); 13 //修改 14 public void update(Object object); 15 //查1 get 16 public Object getObjectById(Class clazz,Serializable id); 17 //查1 load 18 public Object loadObjectById(Class clazz,Serializable id); 19 //按sql语句查 20 public List<Object> getPageByQuery(String hql); 21 //分页 22 public List<Object> getPageByQuery(String hql,PageInfo pageInfo); 23 }
package com.dao.impl; import java.io.Serializable; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.ScrollableResults; import org.hibernate.Session; import org.hibernate.Transaction; import com.dao.inter.Dao; import com.page.PageInfo; import com.util.SessionUtil; import com.vo.Categorys; import com.vo.Products; public class DaoImpl implements Dao{ private Session session; public DaoImpl(){ session=SessionUtil.getSession(); } public void add(Object object) { Transaction tx=session.beginTransaction(); try{ session.save(object); tx.commit(); System.out.println("商品保存成功"); }catch(HibernateException e){ tx.rollback(); e.printStackTrace(); System.out.println("商品保存失败"); }finally{ session.close(); } } public void delete(Object object) { Transaction tx=session.beginTransaction(); try{ session.delete(object); tx.commit(); System.out.println("删除商品成功"); }catch(HibernateException e){ tx.rollback(); System.out.println("删除商品失败"); }finally{ session.close(); } } public void update(Object object) { Transaction tx =session.beginTransaction(); try{ session.update(object); tx.commit(); System.out.println("增加商品成功"); }catch(HibernateException e){ tx.rollback(); System.out.println("增加商品失败"); }finally{ session.close(); } } public Object getObjectById(Class clazz,Serializable id) { Object object=null; object=session.get(clazz,id); //session.clear(); return object; } public Object loadObjectById(Class clazz,Serializable id) { Object object=null; object = (Object)session.load(clazz,id); return object; } @SuppressWarnings(value = "all") public List<Object> getPageByQuery(String hql) { List<Object> list=null; Query query=session.createQuery(hql); list=(List<Object>)query.list(); System.out.println("查询商品"); return list; } public List<Object> getPageByQuery(String hql,PageInfo pageInfo){ List<Object> list=null; Query query=session.createQuery(hql); ScrollableResults rs=query.scroll(); rs.last(); int count=rs.getRowNumber(); pageInfo.setTotalRecrodCount(count+1); query.setFirstResult(pageInfo.getBegin()-1); query.setMaxResults(pageInfo.getPerPageRecordCount()); list=(List<Object>)query.list(); session.clear(); return list; }
package com.page; public class PageInfo { private int totalRecrodCount;//一共有多少条记录 private int perPageRecordCount = 5;//每页有多少条 private int requestPage;//请求第几页 private int begin;//从第几条开始查 private int end;//查到第几条结束 private int currentPage;//当前是第几页 private int totalPageCount;//共几页 private int firstPage = 1;//首页 public int getTotalPageCount() { return totalPageCount; } public void setTotalPageCount(int totalPageCount) { this.totalPageCount = totalPageCount; } public PageInfo(){ } public PageInfo(int requestPage){ this.requestPage = requestPage; //begin=(请求第几页-1)*每页多少条记录+1 begin=(requestPage-1)*perPageRecordCount+1; //end= 请求第几页*每页多少条记录 end = requestPage*perPageRecordCount; } public int getTotalRecrodCount() { return totalRecrodCount; } public void setTotalRecrodCount(int totalRecrodCount) { this.totalRecrodCount = totalRecrodCount; this.compterTotalPageCountByTotalRecordCount(); } public int getPerPageRecordCount() { return perPageRecordCount; } public void setPerPageRecordCount(int perPageRecordCount) { this.perPageRecordCount = perPageRecordCount; } public int getRequestPage() { return requestPage; } public void setRequestPage(int requestPage) { this.requestPage = requestPage; } public int getBegin() { return begin; } public void setBegin(int begin) { this.begin = begin; } public int getEnd() { return end; } public void setEnd(int end) { this.end = end; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public void compterTotalPageCountByTotalRecordCount(){ //totalPageCount = 总页数%每页多少条==0?总页数/每页多少条:(总页数/每页多少条)+1 this.totalPageCount = totalRecrodCount%perPageRecordCount==0?totalRecrodCount/perPageRecordCount:(totalRecrodCount/perPageRecordCount)+1; } }