dao层List<T> 通过泛型实现公共方法 所有dao共用
来源:互联网 发布:贵州省公需科目大数据 编辑:程序博客网 时间:2024/05/14 08:24
建立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);
- dao层List<T> 通过泛型实现公共方法 所有dao共用
- dao层抽取公共的方法
- dao层的泛型实现(2种方法)
- 解决SSh中公共Dao使用泛型且Dao层无其他Dao,Service直接继承公共Dao,部署到tomcat可能会出现的错误。
- SSH中公共Dao层、Dao接口
- DAO与Service层的泛型抽取与实现
- 利用泛型封装DAO层(万能DAO)
- dao接口实现公共类
- 关于实现抽取公共DAO
- 泛型,反射,公共dao层的使用
- DAO中方法实现
- hibernate 泛型简化Dao层
- Dao层
- DAO层
- DAO层实现分页的方法.代码作为记录.
- dao实现层通用增删改查方法
- java实现遍历树形菜单方法——Dao层
- MongoDB Dao层复杂查询、更新方法实现
- 解决Eclipse中SVN版本比较中文乱码问题
- JAVA 基础配置文档(拿来主义)
- Linux输入子系统
- Why generics in method signatures?
- LINUX下的JRTP编程
- dao层List<T> 通过泛型实现公共方法 所有dao共用
- lighttpd不支持Expect: 100-continue的解决办法
- linux驱动面试题目汇总
- .NET日记——字符串方法
- 如何将禁用的文本框内容颜色变灰
- iOS框架介绍(三)---Cocoa Touch 层
- Silverlight 三个基本布局控件(Canvas、StackPanel、Grid )
- hadoop3个节点CPU运行截图
- 每个程序员都应该知道的一些时间数据