数据加载中……
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 当扎瓦 阅读(312) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: