本文主要是介绍CRM-BaseDao的抽取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
CRM-BaseDao的抽取
本次开发中,为了避免每次都编写重复的Dao代码,对每种Dao相似的代码进行了抽取,形成BaseDao。
其他Dao只需要继承BaseDao即可,这样我们可以对其他的Dao只需要编写特定Dao操作即可(根据业务层的需求)。
具体代码实现如下:
//BaseDao的实现public abstract class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {Class<T> clazz;public BaseDaoImpl(){ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass();//BaseDaoImpl<User>clazz = (Class<T>)pt.getActualTypeArguments()[0];}@Overridepublic void save(T entity) {getHibernateTemplate().save(entity);}@Overridepublic void update(T entity) {getHibernateTemplate().update(entity);}@Overridepublic void delete(Serializable id) {getHibernateTemplate().delete(findObjectById(id));}@Overridepublic T findObjectById(Serializable id) {return getHibernateTemplate().get(clazz, id);}@Overridepublic List<T> findObjects() {Query query = getSession().createQuery("FROM " + clazz.getSimpleName());return query.list();}}//UserDao接口public interface IUserDao extends BaseDao<User> {}//UserDao的实现, 继承BaseDao实现, 实现UserDao接口public class UserDaoImpl extends BaseDaoImpl<User> implements IUserDao {}
这篇关于CRM-BaseDao的抽取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!