CommonDao

package com.broadengate.dao;

import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

import javax.annotation.Resource;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Projections;
import org.springframework.orm.hibernate3.HibernateTemplate;

import com.broadengate.common.Page;

public abstract class CommonDao<T> {
 @Resource
 private HibernateTemplate hibernateTemplate;
 @Resource
 private SessionFactory sessionFactory;
 private Class<T> entityClass;

 public HibernateTemplate getHibernateTemplate() {
  return hibernateTemplate;
 }

 public SessionFactory getSessionFactory() {
  return sessionFactory;
 }

 public Session getSession() {
  Session session = sessionFactory.getCurrentSession();
  return session;
 }

 public Criteria getCriteria() {
  Criteria criteria = getSession().createCriteria(entityClass);
  return criteria;
 }

 @SuppressWarnings({ "unchecked", "rawtypes" })
 public CommonDao() {
  Class c = getClass();
  Type type = c.getGenericSuperclass();
  if (type instanceof ParameterizedType) {
   Type[] types = ((ParameterizedType) type).getActualTypeArguments();
   entityClass = (Class<T>) types[0];
  }
 }

 /**
  * 保存记录.
  *
  * @param entity
  */
 public void save(T entity) {
  getSession().save(entity);
 }

 /**
  * 更新记录.
  *
  * @param entity
  */
 public void update(T entity) {
  getSession().update(entity);
 }

 /**
  * 取出指定ID的对象.
  *
  * @param entityClass
  * @param id
  * @return
  */
 @SuppressWarnings("unchecked")
 public T get(Serializable id) {
  T t = (T) getSession().get(entityClass, id);
  return t;
 }

 /**
  * 删除一个对象.
  *
  * @param entity
  */
 public void delete(T entity) {
  getSession().delete(entity);
 }

 /**
  * 取得表的总记录数
  *
  * @return
  */
 public Long getCount(Criteria criteria) {
  criteria.setProjection(Projections.rowCount());
  Long totalCount = (Long) criteria.uniqueResult();
  return totalCount;
 }

 /**
  * 取得指定页的记录
  */
 @SuppressWarnings("unchecked")
 public List<T> listByPage(Criteria criteria, int pageNo, int pageSize) {
  int firstResult = (pageNo - 1) * pageSize;
  criteria.setFirstResult(firstResult);
  criteria.setMaxResults(pageSize);
  List<T> list = criteria.list();
  return list;
 }

 public Page<T> getPage(Criteria criteria, int pageNo, int pageSize) {
  // 查出总记录数.
  Long total = getCount(criteria);
  Page<T> page = new Page<T>(pageNo, pageSize, total);
  // 查找当前页记录.
  List<T> list = listByPage(criteria, pageNo, pageSize);
  
  page.setList(list);
  return page;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值