2e2ea7d297144988c859aff24fdd881cf78384ba.svn-base 5.8 KB
package com.espeed.yxy.dao.impl;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.espeed.yxy.dao.HibernateBaseDAO;
/**
 * 程序名称:    	EspeedMail_时速邮箱
 * 程序版本:    	V1.0
 * 作    者:    	深圳市科飞时速网络技术有限公司(0755-88843776)
 * 版权所有:    	深圳市科飞时速网络技术有限公司
 * 技术支持:    	Tech@21gmail.com
 * 单元名称:     hbernate常用方法(营销邮)
 * 开始时间:    	2013.11.27
 * 程 序 员:    	谢勇
 * 最后修改:    
 * 备    注:		如需修改请通知程序员    
 */
public abstract class HibernateBaseDAOImpl<T extends Serializable ,Pk extends Serializable> extends HibernateDaoSupport implements HibernateBaseDAO<T, Pk> {	
	private Connection conn;
	private PreparedStatement pst;
	private ResultSet rs;
	
	/**增加记录 (返回新增加记录的主键)*/
	public int  add(T o) throws Exception {
		return (Integer) 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) throws Exception {
		return Integer.valueOf(super.getHibernateTemplate().find(hql).get(0).toString());
	}
	/**根据条件和参数查询总记录*/
	public int count(String hql, Object... params) throws Exception {
		return Integer.valueOf(super.getHibernateTemplate().find(hql,params).get(0).toString());
	}
	
	/**hql语句修改删除记录*/
	public int updateorDelByHql(String hql){
		Session session =	super.getHibernateTemplate().getSessionFactory().openSession();
		try {
			 Query query = session.createQuery(hql);
			 return  query.executeUpdate();
		} catch (Exception e) {					
			e.printStackTrace();
			return 0;
		}finally{
			if(session!=null){
				session.clear();
				session.close();
			}
			
		} 
	}
	
	/**sql语句修改删除记录*/
	public int updateorDelBySql(String sql)throws Exception{
		Session session =	super.getHibernateTemplate().getSessionFactory().openSession();
		try {
			Query query = session.createSQLQuery(sql);
			return  query.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
			return 0;
		}finally{
			if(session!=null){
				session.clear();
				session.close();
			}
		} 
		 
	}
	
	/**查询设定的记录条数据*/
	public List<T> findBySet(String hql,int num)throws Exception{
		Session session =	super.getHibernateTemplate().getSessionFactory().openSession();
		try {
			Query query = session.createQuery(hql);
			query.setMaxResults(num);
			return query.list();
		} catch (Exception e) {
			e.printStackTrace();
			return null;			
		}finally{
			if(session!=null){
				session.clear();
				session.close();
			}
		} 
		
		
	}
	
	/**批量插入*/
	public void addPi(List<T> o){
		if(o!=null){
			Session session =	super.getHibernateTemplate().getSessionFactory().openSession();
			try {
				
				session.beginTransaction();
				for(int i=0;i<o.size();i++){
					session.saveOrUpdate(o.get(i));
				}
				session.beginTransaction().commit();	
			} catch (Exception e) {
				e.printStackTrace();
				session.beginTransaction().rollback();
			}finally{
				session.flush();
				session.clear();
				session.close();
			}
		}
	}
	
	/**批量更新*/
	public void updatePi(List<T> o) throws Exception{
		if(o!=null){
			Session session =	super.getHibernateTemplate().getSessionFactory().openSession();
			try {
				
				session.beginTransaction();
				for(int i=0;i<o.size();i++){
					session.update(o.get(i));	
				}
				session.beginTransaction().commit();
				
				
			} catch (Exception e) {
				e.printStackTrace();
				session.beginTransaction().rollback();
			}finally{
				session.flush();
				session.clear();
				session.close();
			}
		}
	}
	
	
	/**批量更新*/
	public void saveandupdatePi(List<T> o) throws Exception{
		if(o!=null){
			Session session =	super.getHibernateTemplate().getSessionFactory().openSession();
			try {
				
				session.beginTransaction();
				for(int i=0;i<o.size();i++){
					session.saveOrUpdate(o.get(i));	
				}
				session.beginTransaction().commit();
				
				
			} catch (Exception e) {
				e.printStackTrace();
				session.beginTransaction().rollback();
			}finally{
				session.flush();
				session.clear();
				session.close();
			}
		}
	}
	
	/**sql语句查询*/
	public List findBySql(String sql){
		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;		
	}
}