⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basedao.java

📁 hibernate分页介绍
💻 JAVA
字号:
package com.gsta.eshore.framework.dao;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
//import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.Projections;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.gsta.eshore.framework.daoutil.CriteriaQuery;
import com.gsta.eshore.framework.daoutil.HqlQuery;
import com.gsta.eshore.framework.daoutil.PageSupport;
import com.gsta.eshore.framework.util.page.PagerUtil;

/**
 * DAO的基类
 * @author hewenqiang Oct 10, 2006 3:56:41 PM
 *
 */
public class BaseDao extends HibernateDaoSupport implements Dao{
	//private static Logger logger = Logger.getLogger(BaseDao.class);
	public BaseDao() {
		super();
	}

	public void update(Object o) {
		//logger.debug("update Object : "+o.getClass().getName());
		getHibernateTemplate().update(o);	
	}

	public void delete(Object o) {
		//logger.debug("delete Object : "+o.getClass().getName());
		getHibernateTemplate().delete(o);
	}
	
	public void deleteAll(Collection entities) {
		//logger.debug("delete Object size is : "+entities.size());
		getHibernateTemplate().deleteAll(entities);
	}

	public void saveOrUpdate(Object o) {
		//logger.debug("saveOrUpdate Object : "+o.getClass().getName());
		getHibernateTemplate().saveOrUpdate(o);
	}
   /**
    * fullEntityName为类的全限定名
    */
	public void delete(String fullEntityName,String id) {
			Object o = (Object)getHibernateTemplate().get(fullEntityName, id);
			if(o!=null){
				delete(o);
			}
	}

	public Serializable save(Object o) {
		//logger.debug("save Object : "+o.getClass().getName());
		return getHibernateTemplate().save(o);
	}
	
	public void save(Object o, Serializable id) {
		//logger.debug("save Object : "+o.getClass().getName()+" id is : "+id);
		getHibernateTemplate().save(o,id);	
	}
	public boolean delete(Class c, Serializable id) {
		//logger.debug("delete Class : "+c.getName()+" id is : "+id);
		Object o = (Object)getHibernateTemplate().get(c, id);
			if(o!=null){
				delete(o);
				return true;
			}else{
				return false;
			}
	}

	public Object loadById(Class c, Serializable id) {
		//logger.debug("load Class: "+c.getName()+" id is : "+id);
		return getHibernateTemplate().load(c, id);
	}

	public Object getById(Class c, Serializable id) {
		//logger.debug("get Class: "+c.getName()+" id is : "+id);
		return getHibernateTemplate().get(c, id);
	}

	public List findAll(Class entity) {
		//logger.debug("findAll Class: "+entity.getName());
		return getHibernateTemplate().loadAll(entity);
	}
	
	public List find(String strHQL) {
		//logger.debug("find List ,HQL is: "+strHQL);
		return getHibernateTemplate().find(strHQL);
	}
	
	public List find(String strHQL,Object o) {
		//logger.debug("find List ,HQL is: "+strHQL);
		return getHibernateTemplate().find(strHQL,o);
	}
	
	public List find(String strHQL,Object[] o) {
		//logger.debug("find List ,HQL is: "+strHQL);
		return getHibernateTemplate().find(strHQL,o);
	}
	
	public List find(final String strHQL, final int offset, final int limit) {
		//logger.debug("find List ,HQL is: "+strHQL +"offset = "+offset+ " limit = "+limit);
		return (List)getHibernateTemplate().execute(
		new HibernateCallback() {
	    	public Object doInHibernate(Session session) throws HibernateException, SQLException {
	    		Query query=session.createQuery(strHQL);
	    		query.setFirstResult(offset);
	    		query.setMaxResults(limit);
	    		return query.list();
					}		
	          }
		);
	}
	
	public List findBySql(final String strHQL) {
		//logger.debug("findBySql List ,HQL is: "+strHQL );
		return (List)getHibernateTemplate().execute(
		new HibernateCallback() {
	    	public Object doInHibernate(Session session) throws HibernateException, SQLException {
	    		Query query=session.createSQLQuery(strHQL);
	    		return query.list();
					}		
	          }
		);
	}
	
 	public PageSupport find(final HqlQuery hqlQuery,final boolean needParameter)
	{
		//logger.debug("find PageSupport ,HQL is: "+hqlQuery.getQueryString());
		return (PageSupport)getHibernateTemplate().execute(
		new HibernateCallback() {
	    	public Object doInHibernate(Session session) throws HibernateException, SQLException {
	    		Query query=session.createQuery(hqlQuery.getQueryString());
	    		if(needParameter)
	    		    query.setParameters(hqlQuery.getParam(), hqlQuery.getTypes());
	    		int allCounts=query.list().size();
	    		int curPageNO = PagerUtil.getCurPageNO(hqlQuery.getCurPage());
	    		int offset = PagerUtil.getOffset(allCounts, curPageNO, hqlQuery.getPageSize());
	    		String toolBar = PagerUtil.getBar(hqlQuery.getMyaction(),allCounts,curPageNO,hqlQuery.getPageSize());
	    		query.setFirstResult(offset);
				query.setMaxResults(hqlQuery.getPageSize());
				return new PageSupport(query.list(),toolBar,offset,curPageNO);
					}		
	          }
		,true);
	}

	public PageSupport find(final CriteriaQuery cq,final boolean isOffset) {
		return (PageSupport)getHibernateTemplate().execute(
				new HibernateCallback() {
			    	public Object doInHibernate(Session session) throws HibernateException, SQLException {
			    		Criteria criteria = cq.getDetachedCriteria().getExecutableCriteria(session); 
			    		//得到总行数
                        int allCounts = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue(); 
                        criteria.setProjection(null);//还原  
            			int curPageNO = PagerUtil.getCurPageNO(cq.getCurPage());// 当前页
            			int offset = PagerUtil.getOffset(allCounts, curPageNO, cq.getPageSize());
            			//String toolBar = PagerUtil.getBar(cq.getMyaction(),cq.getMyform(),allCounts,curPageNO,cq.getPageSize());
            			String toolBar = PagerUtil.getBar(cq.getMyaction(),allCounts,curPageNO,cq.getPageSize());
            		    if(isOffset){
    			    		criteria.setFirstResult(offset);
    			    		criteria.setMaxResults(cq.getPageSize());
            		    }
			    		return new PageSupport(criteria.list(),toolBar,offset,curPageNO);
							}
			          }
				,true);
		
	}

	public List find(final CriteriaQuery cq) {
		//logger.debug("find(CriteriaQuery cq) start");
		return (List)getHibernateTemplate().execute(
				new HibernateCallback() {
			    	public Object doInHibernate(Session session) throws HibernateException, SQLException {
			    		return cq.getDetachedCriteria().getExecutableCriteria(session).list();
							}		
			          }
				,true);
	}
	
    public List findByExample(final Object example,final Class instance) {
		return (List)getHibernateTemplate().execute(
				new HibernateCallback() {
			    	public Object doInHibernate(Session session) throws HibernateException, SQLException {
			    		Criteria criteria=session.createCriteria(instance).add(Example.create(example));
			    		return criteria.list();
							}		
			          }
				);
    	
    }    

	public int getAllCount(final CriteriaQuery cq) {
		//logger.debug("getAllCount(CriteriaQuery cq) start");
		Integer amount = new Integer(0);
		List list= (List)getHibernateTemplate().execute(
				new HibernateCallback() {
			    	public Object doInHibernate(Session session) throws HibernateException, SQLException {
			    		Criteria criteria = cq.getDetachedCriteria().getExecutableCriteria(session)
			    				.setProjection(Projections.rowCount());
			    		return criteria.list();
							}		
			          }
				,true);
		if (list!=null) {
			amount = (Integer) list.get(0);
		}
		return amount.intValue();
	}

	public int getAllCount(final Class c) {
		Integer amount = new Integer(0);
		List list= (List)getHibernateTemplate().execute(
				new HibernateCallback() {
			    	public Object doInHibernate(Session session) throws HibernateException, SQLException {
			    		Criteria criteria=session.createCriteria(c)
			    				.setProjection(Projections.rowCount());
			    		return criteria.list();
							}		
			          }
				);
		if (list!=null) {
			amount = (Integer) list.get(0);
		}
		return amount.intValue();
	}
		
	public int getAllCount(String entityName) {
		int amount = 0;
		List list=null;
		String strHQL = "select count(*) " + entityName;
		//logger.debug("getAllCount : " + strHQL);
		list = getHibernateTemplate().find(strHQL);
		if (list!=null) {
			amount = ((Integer)list.get(0)).intValue();
		}
		return amount;
	}

	public void flush() {
       // logger.debug("flush starting");
		getHibernateTemplate().flush();
	}
	
	public void clear() {
        //logger.debug("clear starting");
		getHibernateTemplate().clear();
	}
	
	public List findByExample(Object o) {
		//logger.debug("findByExample "+o.getClass().getName());
		return getHibernateTemplate().findByExample(o);
	}	

    public Object merge(Object detachedInstance) {
        //logger.debug("merging Object instance"+detachedInstance.getClass().getName());
        return (Object) getHibernateTemplate().merge(detachedInstance);
    }
    public void attachDirty(Object instance) {
    	//logger.debug("attaching dirty Object instance");
        getHibernateTemplate().saveOrUpdate(instance);
    }
    
    public void attachClean(Object instance) {
    	//logger.debug("attaching clean FriendLink instance"+instance.getClass().getName());
        getHibernateTemplate().lock(instance, LockMode.NONE);
    }
 

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -