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];
}
@Override
public void save(T entity) {
getHibernateTemplate().save(entity);
}
@Override
public void update(T entity) {
getHibernateTemplate().update(entity);
}
@Override
public void delete(Serializable id) {
getHibernateTemplate().delete(findObjectById(id));
}
@Override
public T findObjectById(Serializable id) {
return getHibernateTemplate().get(clazz, id);
}
@Override
public 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 {
}
CRUD操作的基类Dao设计
本文介绍了一种在开发中通过抽象基类BaseDao来简化Dao代码的方法,通过继承BaseDao,开发者可以轻松地实现对不同实体的CRUD操作,而无需重复编写相同的功能代码。
1228

被折叠的 条评论
为什么被折叠?



