基ssh框架的dao层抽取

匿名 (未验证) 提交于 2019-12-03 00:22:01

BaseDao接口

public interface BaseDao<T> { 	//增或改 	public void saveOrUpdate(T t); 	//增 	public void save(T t); 	//通过对象删 	public void delete(T t); 	//通过id删 	public void delete(Serializable id);//---->这是所有基本类型的实现类 	//通过对象改 	public void update(T t); 	//通过id查 	public T getById(Serializable id); 	//查所有记录 	public Number getTotalCount(DetachedCriteria dc); 	//分页查,返回用于分页的对象集合 	public List<T> getPageList(DetachedCriteria dc,Integer start,Integer pageSize); } 

BaseDao接口的实现类:BaseDaoImp

public class BaseDaoImp<T> extends HibernateDaoSupport implements BaseDao<T> { 	 	private Class clazz;//用于接受运行期泛型类型 	 	public BaseDaoImp(){ 		//获得当前类型的带有泛型类型的父类 		ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); 		//获得运行期的泛型类型 		clazz = (Class) pt.getActualTypeArguments()[0]; 	} 	 	 	@Override 	public void save(T t) { 		getHibernateTemplate().save(t); 	}  	@Override 	public void delete(T t) { 		getHibernateTemplate().delete(t); 	}  	@Override 	public void delete(Serializable id) { 		 T t = this.getById(id);//先取 		 getHibernateTemplate().delete(t);//再删 	}  	@Override 	public void update(T t) { 		getHibernateTemplate().update(t); 		 	}  	@Override 	public T getById(Serializable id) { 		 		return (T) getHibernateTemplate().get(clazz, id); 	}  	@Override 	public Number getTotalCount(DetachedCriteria dc) { 		//聚合函数,查数量 		 dc.setProjection(Projections.rowCount()); 		 List<Long> count = (List<Long>) getHibernateTemplate().findByCriteria(dc); 		 dc.setProjection(null);//清空聚合函数,不清空的话会有条件的残留 		 if(count != null && count.size() > 0){ 			 return count.get(0).intValue(); 		 }else{ 			 return null; 		 } 	}  	@Override 	public List<T> getPageList(DetachedCriteria dc, Integer start, Integer pageSize) { 		List<T> list = (List<T>) getHibernateTemplate().findByCriteria(dc, start,pageSize); 		return list; 	}   	@Override 	public void saveOrUpdate(T t) { 		// TODO Auto-generated method stub 		getHibernateTemplate().saveOrUpdate(t); 	}  } 

Dao层对象如要使用增删改查方法时,只需要继承BaseDaoImp就可以了,减少了不必要的代码量

public class UserDaoImp extends BaseDaoImp<User> implements UserDao { }

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!