首页>代码>s2sh+dwr框架整合实例>/BaseProject/src/com/anxin/dao/impl/BaseDAOImpl.java
package com.anxin.dao.impl;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Query;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.anxin.dao.BaseDAO;
import com.anxin.util.PageListData;

public class BaseDAOImpl<T, PK extends Serializable> extends
		HibernateDaoSupport implements BaseDAO<T, PK> {

	static Logger logger = LoggerFactory.getLogger(BaseDAOImpl.class);

	// 保存
	public void save(T entity) {
		try {
			getHibernateTemplate().save(entity);
		} catch (RuntimeException re) {
			throw re;
		}
	}

	// 保存或者更新
	public void saveOrUpdate(T entity) {
		try {
			getHibernateTemplate().merge(entity);
		} catch (RuntimeException re) {
			throw re;
		}
	}

	// 删除
	public void delete(T entity) {
		try {
			getHibernateTemplate().delete(entity);
		} catch (RuntimeException re) {
			throw re;
		}
	}

	// 根据id删除某个对象
	public void deleteById(Class<T> entityClass, PK id) {
		try {
			getHibernateTemplate().delete(findById(entityClass, id));
		} catch (RuntimeException re) {
			throw re;
		}
	}

	// 根据id加载某个对象
	public T findById(Class<T> entityClass, PK id) {
		try {
			return (T) getHibernateTemplate().get(entityClass, id);
		} catch (RuntimeException re) {
			logger.error("findById " + entityClass.getName() + " failed :{}",
					re);
			throw re;
		}
	}

	// 查找所有的对象
	public List<T> findAll(Class<T> entityClass) {
		try {
			return getHibernateTemplate().loadAll(entityClass);
		} catch (RuntimeException re) {
			throw re;
		}
	}

	// 根据某个属性及其值精确或模糊查找对象
	public List<T> findByProperty(Class<T> entityClass, String propertyName,
			Object value, int type) {
		String queryString = "";
		try {
			if (type == 1) {// type=1是精确查找
				queryString = "from " + entityClass.getName()
						+ " as model where model." + propertyName + "= ?";
			} else if (type == 2) {// type=2是模糊查找
				queryString = "from " + entityClass.getName()
						+ " as model where model." + propertyName + "like ?";
			}
			return getHibernateTemplate().find(queryString, value);
		} catch (RuntimeException re) {
			throw re;
		}
	}

	// 根据hql语句及其查询参数,当前页数,每页显示的数目得到分页列表
	public PageListData findList(Class<T> entityClass, String hql,
			Object[] params, int currentPage, int pageSize) {
		PageListData listdata=null;
		try {
			Query query = getSession().createQuery(getCountsHql(hql));
			if (null != params && 0 != params.length) {
				for (int i = 0; i < params.length; i++) {
					query.setParameter(i, params[i]);
				}
			} else {
				logger.warn("参数为空");
			}
			int total = ((Long) query.uniqueResult()).intValue();
			logger.debug("总记录数:", total);
			query = getSession().createQuery(hql);
			if (null != params && 0 != params.length) {
				for (int i = 0; i < params.length; i++) {
					query.setParameter(i, params[i]);
				}
			}
			if (0 != pageSize) {
				query.setFirstResult(
						(currentPage == 0 ? 0 : currentPage - 1) * pageSize)
						.setMaxResults(pageSize);
			}
			List data = query.list();
			listdata=new PageListData(total,pageSize,currentPage,
					data);
		} catch (RuntimeException re) {
			throw re;
		}
		return listdata;
	}

	private String getCountsHql(String hql) {
		int index = hql.indexOf("from");
		if (index != -1) {
			return "select count(*) " + hql.substring(index);
		}
		throw new RuntimeException("sql语句异常" + hql);
	}
}
最近下载更多
wangzile1994  LV12 2020年3月30日
guonan991388  LV2 2019年5月29日
不良人  LV6 2018年10月31日
zshengfei  LV3 2018年9月5日
260858883  LV4 2018年4月12日
李洪健  LV12 2018年1月19日
suiyue448  LV11 2017年8月10日
qazxsw111  LV11 2017年7月27日
litianlong  LV1 2017年6月30日
weipeng3333  LV2 2017年6月6日
最近浏览更多
zhaoyangwfd  LV17 2022年6月22日
1581331993 2020年11月4日
暂无贡献等级
昵称好烦  LV3 2020年5月25日
Shirley3 2020年4月26日
暂无贡献等级
wangzile1994  LV12 2020年3月30日
3268312007 2019年10月8日
暂无贡献等级
258055866  LV12 2019年5月19日
1206207437  LV8 2019年4月25日
rose20072011  LV3 2019年2月26日
不良人  LV6 2018年10月31日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友