浏览 2218 次
锁定老帖子 主题:ssh2 DAO接口再抽象
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-11
最后修改:2010-04-25
GenericDao.java
/** 基于泛型的通用Dao接口 */ public interface GenericDao<T, ID extends Serializable> { void create(T entity); //增 void delete(T entity); //删 void update(T entity); //改 T findById(ID id); //根据Id查询 List<T> findAll(); //查询所有 List<T> findList(int pageNo, int pageSize); //分页查询所有 int getTotal(); //获取所有实体数量 } GenericHibernateDaoImpl.java
/** Hibernate对通用的Dao接口的实现 */ public class GenericHibernateDaoImpl<T,ID extends Serializable> implements GenericDao<T,ID> { private Class<T> clazz; @SuppressWarnings("unchecked") public GenericHibernateDaoImpl() { //通过反射获取T的类型信息实例 this.clazz = (Class<T>)((ParameterizedType)this.getClass() .getGenericSuperclass()) .getActualTypeArguments()[0]; } public void create(T entity) { //create方法的实现 HibernateUtil.getSession().save(entity); } public void delete(T entity) { //delete方法的实现 HibernateUtil.getSession().delete(entity); } @SuppressWarnings("unchecked") public void update(T entity) { //update方法的实现 //HibernateUtil.getSession().saveOrUpdate(entity); entity = (T) HibernateUtil.getSession().merge(entity); } @SuppressWarnings("unchecked") public T findById(ID id) { //findById方法的实现 return (T)HibernateUtil.getSession().load(clazz, id); //get } @SuppressWarnings("unchecked") public List<T> findAll() { //findAll方法的实现 return HibernateUtil.getSession().createCriteria(clazz).list(); } @SuppressWarnings("unchecked") public List<T> findList(int pageNo, int pageSize) { //分页查询 return HibernateUtil.getSession() .createCriteria(clazz) .setFirstResult((pageNo - 1) * pageSize) .setMaxResults(pageSize) .list(); } public int getTotal() { //获取总记录数 Integer count = (Integer) HibernateUtil.getSession() .createCriteria(clazz) .setProjection(Projections.rowCount()) .uniqueResult(); if (null == count) { return 0; } else { return count.intValue(); } } } 参考文章:http://tech.it168.com/j/2007-12-27/200712271701173_1.shtml 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |