數據加載中……
          Spring + Hibernate 數據訪問

           

          一,1個接口:StatDAO.java

          package com.statistic.DAO;

          import java.util.List;
          import org.hibernate.Session;

          public interface StatDAO {

            
          public void save(Object obj);
            
          public void update(Object obj);
            
          public void delete(Object obj);
            
          public Object get(Class c, Long id);
            
          public List findByPage(String hql, int pageSize, int pageNO);
            
          public List findList(String hql);
            
          public int getCount(String hql);
            
          public void executeDel(String hql);
            
          public Session getSess();
          }


          二,1個接口實現類:StatDAOImpl.java 
                  繼承HibernateDaoSupport
                  實現StatDAO.java

          package com.statistic.DAO.impl;

          import com.statistic.DAO.StatDAO;
          import java.util.*;
          import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
          import org.springframework.orm.hibernate3.HibernateCallback;
          import org.hibernate.Session;
          import org.hibernate.Query;
          import java.sql.Statement;
          import java.sql.SQLException;


          public class StatDAOImpl extends HibernateDaoSupport implements StatDAO{
            
          public StatDAOImpl() {
            }
            
          public void save(Object obj){
              
          this.getHibernateTemplate().save(obj);
            }

            
          public void update(Object obj){
              
          this.getHibernateTemplate().update(obj);
            }

            
          public void delete(Object obj){
              
          this.getHibernateTemplate().delete(obj);
            }
            
          public Object get(Class c, Long id){
              
          return this.getHibernateTemplate().get(c,id);
            }

            
          public List findByPage(String hql, int pageSize, int pageNO){
              
          final String sql = hql;
              
          final int firstRow = (pageNO - 1* pageSize;
              
          final int maxRow = pageSize;

              List list 
          = this.getHibernateTemplate().executeFind(new HibernateCallback() {
                
          public Object doInHibernate(Session session) {
                  Query q 
          = session.createQuery(sql);
                  q.setFirstResult(firstRow);
                  q.setMaxResults(maxRow);
                  
          return q.list();
                }
              }
              );
              
          return list;
            }

            
          public List findList(String hql){
              
          return this.getHibernateTemplate().find(hql);
            }

            
          public int getCount(String hql){
              
          int count = 0;
                  List list 
          = this.getHibernateTemplate().find(hql);
                  
          if((list != null&& (list.size() != 0)) {
                      count 
          = ((Long) list.get(0)).intValue();
                  }
                  
          return count;

            }

            
          /**
             * 執行非查詢的SQL語句,這里是刪除
             * 
          @param hql String
             
          */
            
          public void executeDel(String hql) {
              
          final String sql = hql;
              
          this.getHibernateTemplate().execute(new HibernateCallback()  {
               
          public Object doInHibernate(Session session) {
                 Statement stat 
          =null;
                 
          try{
                   stat 
          = session.connection().createStatement();
                   
          return new Integer(stat.executeUpdate(sql));

                 }
          catch(Exception e){
                   e.printStackTrace();
                   
          return null;
                 }
          finally{
                   
          try{
                     stat.close();
                   }
          catch(Exception e){
                     e.printStackTrace();
                   }
                 }

               }
             }
             );
            }

            
          public Session getSess(){
              
          return this.getHibernateTemplate().getSessionFactory().openSession();
             }



          }


          三,商業邏輯

           

          package com.statistic.business;

          import com.statistic.DAO.StatDAO;
          import java.util.List;
          import java.util.ArrayList;
          import com.statistic.bean.ItemDay;
          import com.bean.Item;

          public class ItemDayBO {
            
          private StatDAO statDAO;

            
          private com.business.ItemBO miscItemBO;

            
          public void setMiscItemBO(com.business.ItemBO miscItemBO) {
                  
          this.miscItemBO = miscItemBO;
            }
            
          public void setStatDAO(StatDAO statDAO){
              
          this.statDAO= statDAO;
            }

            
          public List getItemList(String type,String date1){
              List list 
          = new ArrayList();
              String hql 
          = "select * from ItemDay as i where i.typeid="+type+
                  
          " and i.downloadDate='"+date1+"'";
              list 
          = statDAO.findList(hql);
              
          return list;
            }

            
          public List getTypeCount(String date1,String date2){
              List list 
          = new ArrayList();
              String hql 
          = "select i.typeid,sum(i.downloadTotal)";
              
          return list;
            }

            
          public List[] getAvatatListBySubject(String date1,String str,String orderCol , String orderMode){
              List[] list 
          = new ArrayList[3];
              String hql 
          ="from ItemDay i "+
                              
          " where i.typeid=1 and ("+str+
                              
          ") and i.downloadDate='"+date1+""+
                              
          " order by "+orderCol +" "+orderMode;
              List tempList 
          = statDAO.findList(hql);
              list[
          0]=new ArrayList();
              list[
          1]=new ArrayList();
              list[
          2]=new ArrayList();
              
          for(int i =0;i<tempList.size();i++){
                ItemDay itemDay 
          = (ItemDay)tempList.get(i);
                Item item 
          = avatarItemBO.get(itemDay.getProductid());
                
          if(item!=null){
                  itemDay.setName(item.getName());

                  
          if(itemDay.getSex()==1){
                    list[
          0].add(itemDay);
                  }
          else if(itemDay.getSex()==2){
                    list[
          1].add(itemDay);
                  }
          else{
                    list[
          2].add(itemDay);
                  }
                }

              }

              
          return list;
            }

            
          public List getMiscListBySubject(String date1,String str,String orderCol , String orderMode){
              List list 
          = new ArrayList();
              String hql 
          = "from ItemDay i where i.downloadDate='"+date1+"' and i.code like '"+str+ "' order by "+orderCol +" "+orderMode;
              list 
          = statDAO.findList(hql);
              
          for(int i =0;i<list.size();i++){
                ((ItemDay)list.get(i)).setName((miscItemBO.get(((ItemDay)list.get(i)).getProductid()).getName()));
              }
              
          return list;
            }

            
          public String[] getTotalCount(String date1,String type){
              String[] counts 
          = new String[2];
              String hql 
          = "select sum(i.downloadTotal),sum(i.clickTotal) from ItemDay i "+
                           
          "where i.downloadDate='"+date1+"' and i.code like '"+type+"'";
              List list 
          = statDAO.findList(hql);
              Object[] objs 
          = (Object[])list.get(0);
              counts[
          0= objs[0]+"";
              counts[
          1= objs[1]+"";
              
          return counts;
            }

          }

          posted on 2007-08-15 15:50 當扎瓦 閱讀(317) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 陈巴尔虎旗| 樟树市| 革吉县| 康平县| 灵川县| 郓城县| 乌审旗| 佛冈县| 陆良县| 当雄县| 鹿泉市| 武邑县| 呼伦贝尔市| 曲松县| 万山特区| 丹凤县| 都江堰市| 比如县| 十堰市| 宁晋县| 八宿县| 武胜县| 乐平市| 长治市| 双牌县| 温州市| 浪卡子县| 湖口县| 丘北县| 赤峰市| 桂林市| 特克斯县| 龙海市| 新和县| 遂昌县| 崇义县| 米易县| 富民县| 涟源市| 贵州省| 通许县|