hibernate通用泛型dao
2012-02-14 15:17
417 查看
BaseDao.java
有待一步一步的完善
package com.smvc.annonation.dao; import java.sql.SQLException; import java.util.List; import javax.annotation.Resource; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.springframework.dao.support.DataAccessUtils; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; public class BaseDao<T> { protected HibernateTemplate hibernateTemplate; //获取某一个类的所有数据 //泛型的问题,为什么这里不能使用T.getClass?,可能就跟不能直接new T()是一样的道理, //需要运行时候才知道 @SuppressWarnings("unchecked") public List<T> listAll(Class<T> clazz){ List<T> lists = (List<T>)hibernateTemplate.find("from " + clazz.getClass().getName()); return lists; } //保存指定实体类 public void save(T t){ this.getHibernateTemplate().save(t); } //删除指定实体类 public void delete(T t){ this.getHibernateTemplate().delete(t); } //更新或者保存指定实体 public void saveOrUpdate(T t){ this.getHibernateTemplate().saveOrUpdate(t); } //根据id查找指定实体对象 @SuppressWarnings("unchecked") public T findById(Class<T> clazz, int id){ return (T)this.getHibernateTemplate().get(clazz.getClass(), id); } //查询指定hql并返回集合 @SuppressWarnings("unchecked") public List<T> find(String hql, Object... values){ return (List<T>)this.getHibernateTemplate().find(hql, values); } //查询指定实体的总记录数 public int getCount(Class<T> clazz){ int count = DataAccessUtils.intResult(hibernateTemplate.find("select count(*) from " + clazz.getName())); return count; } //根据传入的偏移量和步长来查询数据 @SuppressWarnings("unchecked") public List<T> getListForPage(final String hql, final int offset, final int length){ List<T> list = (List<T>)this.hibernateTemplate.executeFind(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); query.setFirstResult(offset); query.setMaxResults(length); List list = query.list(); return list; } }); return list; } public HibernateTemplate getHibernateTemplate() { return hibernateTemplate; } @Resource(name="hibernateTemplate") public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } }
有待一步一步的完善
相关文章推荐
- 基于泛型的通用Dao接口和hibernate的实现
- Struts2、Hibernate、Spring整合的泛型DAO,以及通用的分页技术
- 基于泛型的通用Dao接口和hibernate的实现
- 一个通用的泛型GenericHibernateDao
- 基于泛型的通用Dao接口hibernate实现
- 一个通用的泛型GenericHibernateDao
- 一个通用的泛型GenericHibernateDAO
- 一个通用的泛型 GenericHibernateDao
- Struts2、Hibernate、Spring整合的泛型DAO,以及通用的分页技术
- Hibernate 通用底层Dao
- 详细介绍 Hibernate 泛型 DAO 及其使用方法
- spring2.5整合hibernate3.3的泛型Dao并加入spring jdbc的支持
- 利用反射泛型编写一个通用Dao
- Spring JdbcTemplate实现通用的泛型dao二:实现自己的名称转换NameHandler
- [转]Spring JdbcTemplate实现通用的超级dao,比泛型dao更加强大
- spring2.5整合hibernate3.3的泛型Dao并加入spring jdbc的支持
- j2ee学习笔记——初试ssh之泛型通用dao(转)
- <<项目架构那点儿事>>——hibernate泛型Dao,让持久层简洁起来 ...
- 不要重复DAO!使用Hibernate 和Spring AOP 构建泛型类型安全的DAO
- 我的hibernate通用dao层 .