01c36189608c5b731d161411492f93673fac14fd.svn-base 4.5 KB
package yxy.timer.dao.impl;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import yxy.timer.dao.HibernateBaseDAO;

public abstract class SaleHibernateBaseDAOImpl<T extends Serializable ,Pk extends Serializable> extends HibernateDaoSupport
	implements HibernateBaseDAO<T, Pk> 
{	
	//------------------------------常用CRUD操作-----------------------------------------

	/**增加记录 (返回新增加记录的主键)*/
	public int  add(T o) throws Exception {
		return (Integer) super.getHibernateTemplate().save(o);	
		
	}

	/**增加记录(无返回�?)*/
	public void  adddate(T o) throws Exception 
	{
		super.getHibernateTemplate().save(o);			
	}

	 /**修改记录*/
	public void update(T o) throws Exception {
		super.getHibernateTemplate().update(o);
	}
	/**删除记录*/
	public void del(T o) throws Exception {
		super.getHibernateTemplate().delete(o);
	}

	/**添加或更改*/
	public void saveOrUpdate(T o) throws Exception {
		super.getHibernateTemplate().saveOrUpdate(o);
	}
	/**根据ID获取�?��数据*/
	@SuppressWarnings("unchecked")
	public T get(Class<T> t,Pk pk) throws Exception {
		return (T) super.getHibernateTemplate().get(t, pk);
	}
	/**根据ID获取�?��数据*/
	@SuppressWarnings("unchecked")
	public T load(Class<T> t,Pk pk) throws Exception {
		return (T) super.getHibernateTemplate().load(t, pk);
	}
	/**根据hql进行条件查询*/
	@SuppressWarnings("unchecked")
	public List<T> getAll(String hql) throws Exception {
		return super.getHibernateTemplate().find(hql);
	}
	/**条件查询*/
	@SuppressWarnings("unchecked")
	public List<T> getAll(String whereHql, Object... params) throws Exception {
		return super.getHibernateTemplate().find(whereHql,params);
	}

	/**根据条件和参数查询�?记录*/
	public int count(String hql, Object... params) throws Exception {
		return Integer.valueOf(super.getHibernateTemplate().find(hql,params).get(0).toString());
	}
	/**根据条件查询总记录*/
	public int count(String hql) throws Exception {
		List result=super.getHibernateTemplate().find(hql);
		if(result.size()>0&&result.get(0)!=null&&!result.get(0).equals("null")){
			return Integer.valueOf(result.get(0).toString());
		}else{
			return 0;
		}
		//return Integer.valueOf(super.getHibernateTemplate().find(hql).get(0).toString());
	}
	
	/**批量插入*/
	public void addPi(List<T> o)throws Exception{
		Session session =null;
		
		if(o!=null){				
			session=super.getHibernateTemplate().getSessionFactory().openSession();
			session.beginTransaction();
			for(int i=0;i<o.size();i++){	
				session.saveOrUpdate(o.get(i));	
				if(i%10==0){
					session.flush();
					session.clear();
				}
			}
			session.getTransaction().commit();
		} 
		session.close();
			
	}
	
	/**Hql语句修改删除记录*/
	public int updateorDelByHql(String hql){
		Query query =	null;
		int result=0;		
		Session session =null;
		try {
			session=super.getHibernateTemplate().getSessionFactory().openSession();	
			query = session.createQuery(hql);
			result = query.executeUpdate();	
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.clear();
				session.close();
			}
		}
		
		return result;
	}
	
	/**查询设定的记录条数据*/
	public List<T> findBySet(String hql,int num){
		Session session =	null;	
		Query query=null;
		try {
			session=super.getHibernateTemplate().getSessionFactory().openSession();	
			query = session.createQuery(hql);
			query.setMaxResults(num);
			return query.list();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.clear();
				session.close();
			}
		}		
		return null;
	}
	
	/**sql语句查询*/
	public List findBySql(String sql) throws Exception{
		Session session=null;
		try {
			session =super.getHibernateTemplate().getSessionFactory().
					openSession();
			return session.createSQLQuery(sql).list();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.clear();
				session.close();
			}
		}
		return null;		
	}
	
	/**sql语句修改删除记录*/
	public int updateorDelSql(String sql){
		Query query =	null;
		int result=0;		
		Session session =null;
		try {
			session=super.getHibernateTemplate().getSessionFactory().openSession();		
			query = session.createSQLQuery(sql);
			result = query.executeUpdate();	
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.clear();
				session.close();
			}
		}
		
		return result;
	}
}