zoukankan      html  css  js  c++  java
  • 通用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();
        
        
    }

    宝贝网址:

  • 相关阅读:
    FZU 2150 Fire Game
    POJ 3414 Pots
    POJ 3087 Shuffle'm Up
    POJ 3126 Prime Path
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    字符数组
    HDU 1238 Substing
    欧几里德和扩展欧几里德详解 以及例题CodeForces 7C
    Codeforces 591B Rebranding
  • 原文地址:https://www.cnblogs.com/W203654/p/3772783.html
Copyright © 2011-2022 走看看