首页 > 代码库 > 通用Hibernate DAO类(包括分页)

通用Hibernate DAO类(包括分页)

package com.jronline.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

//import com.jkjshoponline.entity.OrderOfMembercenterDTO;

public abstract class CommonDAOImpl extends HibernateDaoSupport{

    //执行SQL原生查询
public List findHqlForSql(final String hql) {
        
        List  list = getHibernateTemplate().executeFind(new HibernateCallback()
        // 用来回调的匿名内部类
                {
                    public Object doInHibernate(Session session) throws HibernateException, SQLException {
                        Query query = session.createSQLQuery(hql);
                         return  query.list();
                    }
                });
        return list;
    }
 
 
    
     /**
     * 分页信息
     * 
     * @param hql
     * @param first
     * @param max
     * @return List
     */
    public List findListForPage(final String hql, final int pageId, final int pageSize) {
        List list = getHibernateTemplate().executeFind(new HibernateCallback()
        // 用来回调的匿名内部类
                {
                    public Object doInHibernate(Session session) throws HibernateException, SQLException {
                        Query query = session.createQuery(hql);
                        int comp=(pageId-1)*pageSize;
                        query.setFirstResult(comp);// 第一行
                        query.setMaxResults(pageSize);// 最大行
                        List list = query.list();
                        return list;
                    }
                });
        return list;  
    }
    
    /**
     * sql by qbzuo 2012-10-15
     * 分页信息
     * 
     * @param sql
     * @param first
     * @param max
     * @return List
     */
    public List findSQLListForPage(final String sql, final int pageId, final int pageSize) {
        List list = getHibernateTemplate().executeFind(new HibernateCallback()
        // 用来回调的匿名内部类
                {
                    public Object doInHibernate(Session session) throws HibernateException, SQLException {
                        SQLQuery query = session.createSQLQuery(sql);
                        int comp=(pageId-1)*pageSize;
                        query.setFirstResult(comp);// 第一行
                        query.setMaxResults(pageSize);// 最大行
                        List list = query.list();
                        return list;
                    }
                });
        return list;  
    }
     
    /**
     * 查询所有的记录数
     * 
     * @author qbzuo
     * @param totalHql
     * @return int
     */
    public int findTotalRow(String totalHql) {
        int totalRow = 0;
        List list = getHibernateTemplate().find(totalHql);
        if (list.size() > 0&&list.get(0)!=null) {
        //    System.out.println("list.get(0).toString()="+list.get(0).toString());
            totalRow = Integer.parseInt(list.get(0).toString());
        }
        return totalRow;
    }
    
    public Double findTotal(String totalHql){
        double total=0;
        List list = getHibernateTemplate().find(totalHql);
        if(list.size()>0 && list.get(0)!=null){
            total = Double.parseDouble(list.get(0).toString());
        }
        
        return total;
    }
        
    /**
     * 执行HQL
     * 
     * @author qbzuo
     * @param totalHql
     * @return int
     */
    public List findHql(String hql) {
    
        return getHibernateTemplate().find(hql);
    }
    
    /**
     * 执行SQL
     * 
     * @author qbzuo
     * @param totalHql
     * @return int
     */
    public List findSql(final String sql) {
    
        List list = getHibernateTemplate().executeFind(new HibernateCallback()
        // 用来回调的匿名内部类
                {
                    public Object doInHibernate(Session session) throws HibernateException, SQLException {
                        SQLQuery query = session.createSQLQuery(sql);
                        List list = query.list();
                        return list;
                    }
                });
        return list;  
    }
    //
    public List findSqlLimit(final String sql,final int limit){
        
        List list = getHibernateTemplate().executeFind(new HibernateCallback()
        // 用来回调的匿名内部类
                {
                    public Object doInHibernate(Session session) throws HibernateException, SQLException {
                        SQLQuery query = session.createSQLQuery(sql);
                        query.setFirstResult(0);// 第一行
                        query.setMaxResults(limit);// 最大行
                        List list = query.list();
                        
                        return list;
                    }
                });
        return list;  
    }

    /**
     * 查找一个表的前几条记录,如前3条
     * @param hql
     * @param limit 
     * @return
     */
    public List findHqlLimit(final String hql,final int limit) {
        
        List  list = getHibernateTemplate().executeFind(new HibernateCallback()
        // 用来回调的匿名内部类
                {
                    public Object doInHibernate(Session session) throws HibernateException, SQLException {
                        Query query = session.createQuery(hql);
                     
                        query.setFirstResult(0);// 第一行
                        query.setMaxResults(limit);// 最大行
                        return     query.list();
                         
                    }
                });
        return list;
    }
 
    /**内部
     * 执行多条更新
     * @param hql
     * by qbzuo
     */
    public int updateSqlList(final String sql) {
        
        Session session=getHibernateTemplate().getSessionFactory().openSession();
        java.sql.Connection con=session.connection();
        Statement statement;
    try {
        Transaction transaction=    session.beginTransaction();
        transaction.begin();
        statement = con.createStatement();
        int row=statement.executeUpdate(sql);
        transaction.commit();
        con.close();
        return row;
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return -1;
    }    
    
   } 
    
    /**内部 qbzuo  2013-1-25
     * 执行多条更新
     * @param hql
     * by qbzuo
     */
    public int updateSql(final String sql) {
        
        Object result = getHibernateTemplate().execute(new HibernateCallback()
        // 用来回调的匿名内部类
                {
                    public Object doInHibernate(Session session) throws HibernateException, SQLException {
                        SQLQuery query = session.createSQLQuery(sql);
                     
                        int result = query.executeUpdate();
                        return     new Integer(result);
                         
                    }
                });
        return    result!=null?(Integer)result:0;
    
   } 
    
    /**内部 qbzuo  2013-1-25
     * 执行多条更新
     * @param hql
     * by qbzuo
     */
    public int updateHql(final String hql) {
        
        Object result = getHibernateTemplate().execute(new HibernateCallback()
        // 用来回调的匿名内部类
                {
                    public Object doInHibernate(Session session) throws HibernateException, SQLException {
                        Query query = session.createQuery(hql);
                     
                        int result = query.executeUpdate();
                        return     new Integer(result);
                         
                    }
                });
        return    result!=null?(Integer)result:0;
    
   }     
    
    //抽象方法得到dao
    //public abstract HibernateDaoSupport getDao();
    
    
}