读书人

ssh2 DAO接口又抽象

发布时间: 2012-10-31 14:37:32 作者: rapoo

ssh2 DAO接口再抽象

GenericDao.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

读书人网 >软件架构设计

热点推荐