package cfw.dao.impl;

import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.commons.lang.StringEscapeUtils;
import org.apache.poi.ss.formula.functions.T;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import cfw.dao.IBaseDao;

@SuppressWarnings("hiding")
public class BaseDao<T> extends HibernateDaoSupport implements IBaseDao<T>{
	@Resource(name = "sessionFactory")
	public void setSuperSessionFactory(SessionFactory sessionFactory) {
		super.setSessionFactory(sessionFactory);
	}
	

	private Class<T> clazz;
	@SuppressWarnings("unchecked")
	public BaseDao() {
		clazz =(Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
	}
	@Override
	public T findById(Serializable id) {
		return this.getHibernateTemplate().get(clazz, id);
	}
	@Override
	public void  update(T obj) {
		// TODO Auto-generated method stub
		this.getHibernateTemplate().update(obj);
	}
	@Override
	public void save(T obj) {
		this.getHibernateTemplate().saveOrUpdate(obj);
		
	}
	@SuppressWarnings("unchecked")
	@Override
	public T findObject(Map<String, Object> param) {
		final StringBuffer hsql = new StringBuffer();
		hsql.append("from " +  clazz.getSimpleName() + " where 1=1");
		if(param != null)
		{
			Iterator<String> it = param.keySet().iterator();		
			while(it.hasNext())
			{
				String field = it.next();
				Object value = param.get(field);
				if(value != null && !value.equals(""))
				{
					hsql.append(" and " + field + "='" + StringEscapeUtils.escapeSql(value.toString()) +"'");
				}else if (field != null && value == null) {
					hsql.append(" and " + field);
				}
			}

			List<T> result = (List<T>) getHibernateTemplate().execute(   
					new HibernateCallback<T>() {   
						public T doInHibernate(org.hibernate.Session session)   
						throws org.hibernate.HibernateException {   
							Query query = session.createQuery(hsql.toString()); 
							List<T> rows = query.list();   
							return (T) rows;   
						}   
					});  
			if (result !=null && result.size()>0) {
				return result.get(0);
			}
		}
		return null;
	}
}
最近下载更多
aihdgt  LV1 2023年6月14日
a6134034  LV2 2023年2月24日
蓝哈哈  LV1 2022年5月24日
不懂不懂  LV1 2022年5月18日
axiaobai  LV5 2022年2月21日
mudingc木钉  LV30 2021年6月11日
1161371062  LV1 2021年5月27日
迷彩风情  LV26 2021年3月4日
Hadoop_CPU  LV6 2020年12月22日
2869580060  LV10 2020年5月14日
最近浏览更多
慵懒的小橘猫  LV11 6月4日
bai fei liu  LV1 4月19日
谢尚证 4月9日
暂无贡献等级
SZEPEZS  LV8 3月15日
微笑刺客  LV19 2023年12月8日
uni-code_0123  LV1 2023年12月7日
husiyu  LV3 2023年10月15日
aihdgt  LV1 2023年6月14日
鹅鹅鹅饿 2023年6月6日
暂无贡献等级
a小塔塔 2023年4月26日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友