dao層List 通過泛型實現公共方法 所有dao共用

建立common package,創建dao.BaseDaoSupport、service.CommonService、service.CmmonServiceImpl。其它模塊service 繼承CommonService。
1、BaseDaoSupport。

package com.zte.ace.common.dao;

import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set;

import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Restrictions; import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class BaseDaoSupport extends HibernateDaoSupport {  @SuppressWarnings({ "unchecked", "hiding" })  public <T> T getById(Class<T> t, Long id) {   return (T)this.getHibernateTemplate().get(t, id);  }  public long saveObj(Object obj) {   Object object = this.getHibernateTemplate().save(obj);   return Long.parseLong(object.toString());  }  public void updateObj(Object obj){   this.getHibernateTemplate().update(obj);  }  public void deleteObj(Object obj){   this.getHibernateTemplate().delete(obj);  }  public <T> List<T> getObjListByParameter(Class<T> t,Map<String,Object> map) {   DetachedCriteria criteria = DetachedCriteria.forClass(t);   Set<Map.Entry<String, Object>> set = map.entrySet();   for (Iterator<Map.Entry<String, Object>> it = set.iterator(); it.hasNext();) {             Map.Entry<String, Object> entry = (Map.Entry<String, Object>) it.next();             String key = entry.getKey();             String[] keys = key.split(",");             if("eq".equals(keys[0])){              criteria.add(Restrictions.eq(keys[1], entry.getValue()));             }             else if("like".endsWith(keys[0]))             {              criteria.add(Restrictions.like(keys[1], "%"+entry.getValue()+"%"));             }else if("order".endsWith(keys[0]))             {              if("desc".equals(entry.getValue().toString())){               criteria.addOrder(Order.desc(keys[1]));              }else{               criteria.addOrder(Order.asc(keys[1]));              }             }         }   List<T> list = this.getHibernateTemplate().findByCriteria(criteria);   if(list == null){    return new ArrayList<T>();   }   return list;  } }

 

2、CommonService
package com.zte.ace.common.service;

import java.util.List;
import java.util.Map;


public interface BaseService {
	public <T> T getById(Class<T> t, Long id);
	public long saveObj(Object obj) ;
	public void updateObj(Object obj);
	public void deleteObj(Object obj);
	public <T> List<T> getObjListByParameter(Class<T> t,Map<String,Object> map);
}

 

 

3、CommonServiceImpl

package com.zte.ace.common.service;

import java.util.List; import java.util.Map;

import com.zte.ace.common.dao.BaseDaoSupport;

public class BaseServiceImpl implements BaseService{  private BaseDaoSupport baseDao;    public BaseDaoSupport getBaseDao() {   return baseDao;  }  public void setBaseDao(BaseDaoSupport baseDao) {   this.baseDao = baseDao;  }  public <T> T getById(Class<T> t, Long id) {   return baseDao.getById(t, id);  }  public long saveObj(Object obj) {   return baseDao.saveObj(obj);  }  public void updateObj(Object obj){   baseDao.updateObj(obj);  }  public void deleteObj(Object obj){   baseDao.deleteObj(obj);  }    public <T> List<T> getObjListByParameter(Class<T> t,Map<String,Object> map){   return baseDao.getObjListByParameter(t,map);  } }

4、bean配置文件,配置
<bean id="baseDao" class="com.zte.ace.common.dao.BaseDaoSupport" scope="singleton">
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
 <bean id="baseService" class="com.zte.ace.common.service.BaseServiceImpl" scope="singleton">
  <property name="baseDao" ref="baseDao"></property>
 </bean>
<bean id="applicationPageService" parent="baseService" class="com.zte.ace.page.service.ApplicationPageServiceImpl">
  <property name="applicationPageDao" ref="applicationPageDao"></property>
 </bean>
5、action層引用
  PageControl pageControl = this.applicationPageService.getById(PageControl.class, Long.parseLong(pageId));
  Map<String,Object> map = new HashMap<String,Object>();
  map.put("eq,pageId", Long.parseLong(pageId));
  List<PageControl> pageContorlList = this.applicationPageService.getObjListByParameter(PageControl.class, map);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章