建立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);