锁定老帖子 主题:泛型dao架构实现,封装crud等基本操作
精华帖 (0) :: 良好帖 (2) :: 新手帖 (2) :: 隐藏帖 (5)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-10
可以考虑异常的抛出,在这种切面代码中没有可测异常的抛出是比较危险的。个人感觉。
|
|
返回顶楼 | |
发表时间:2008-12-10
最后修改:2009-07-25
.
|
|
返回顶楼 | |
发表时间:2008-12-18
呵呵,appfuse里面已经有封装好的
|
|
返回顶楼 | |
发表时间:2008-12-18
我有个dao和你的差不多,封装了30多种常用的方法,用在开发上发现基本DAO的代码就是0,看来大家的想法是一致的
|
|
返回顶楼 | |
发表时间:2008-12-19
主键类型不要用Long,用Serialized吧
|
|
返回顶楼 | |
发表时间:2008-12-19
不知道楼主的dao的实现类为什么是抽象类呢?是不是为了便于扩展?对项目本身有什么厉害关系吗?
另外我有个关于变量赋值的疑惑,感兴趣的可以看看:http://xijunhu.iteye.com/blog/297767 |
|
返回顶楼 | |
发表时间:2008-12-20
这个还算靠谱,和我们的思路大方面上一致。
上次见到一个什么通用DAO差点吐血 |
|
返回顶楼 | |
发表时间:2008-12-25
public abstract class BaseDAOImpl<T, PK extends Serializable> extends HibernateDaoSupport implements BaseDAO<T, PK> { protected abstract Class<T> type(); // 保存 public void save(T instance) { getHibernateTemplate().save(instance); } // 更新 public void update(T instance) { getHibernateTemplate().update(instance); } // 删除 public void delete(T instance) { getHibernateTemplate().delete(instance); } // 根据ID查询 @SuppressWarnings("unchecked") public T get(PK id) { return (T) getHibernateTemplate().get(type(), id); } // 查询所有 @SuppressWarnings("unchecked") public List<T> findAll() { return getHibernateTemplate().loadAll(type()); } // 根据例子查询 @SuppressWarnings("unchecked") public List<T> findByExample(T instance) { return getHibernateTemplate().findByExample(instance); } // 根据HQL语句进行update操作等 public int bulkUpdate(String hql) { return getHibernateTemplate().bulkUpdate(hql); } // 根据HQL语句进行update操作等 public int bulkUpdate(String hql, Object value) { return getHibernateTemplate().bulkUpdate(hql, value); } // 根据HQL语句进行update操作等 public int bulkUpdate(String hql, Object[] value) { return getHibernateTemplate().bulkUpdate(hql, value); } // 根据HQL语句进行查询 @SuppressWarnings("unchecked") public List<T> find(String queryString) { return getHibernateTemplate().find(queryString); } // 根据HQL语句进行查询 @SuppressWarnings("unchecked") public List<T> find(String queryString, Object obj) { return getHibernateTemplate().find(queryString, obj); } // 根据HQL语句进行查询 @SuppressWarnings("unchecked") public List<T> find(String queryString, Object[] obj) { return getHibernateTemplate().find(queryString, obj); } /** * 使用命名查询进行查询 * * @param queryString * HQL * @param paramName * 参数名 * @param value * 参数值 * @return */ @SuppressWarnings("unchecked") public List<T> findByNamedParam(String queryString, String paramName, Object value) { return this.getHibernateTemplate().findByNamedParam(queryString, paramName, value); } /** * 使用命名查询进行查询 多个参数 * * @param queryString * HQL * @param paramNames * 参数名的数组 * @param values * 参数值的数组 * @return */ @SuppressWarnings("unchecked") public List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values) { return this.getHibernateTemplate().findByNamedParam(queryString, paramNames, values); } /** * 使用HIBERNATE映射文件中的定义的HQL语句进行查询 * * @param queryName * 文件中定义的HQL语句的名字 * @return */ @SuppressWarnings("unchecked") public List<T> findByNamedQuery(String queryName) { return getHibernateTemplate().findByNamedQuery(queryName); } /** * * @param queryName * @param value * @return */ @SuppressWarnings("unchecked") public List<T> findByNamedQuery(String queryName, Object value) { return getHibernateTemplate().findByNamedQuery(queryName, value); } /** * * @param queryName * @param values * @return */ @SuppressWarnings("unchecked") public List<T> findByNamedQuery(String queryName, Object[] values) { return getHibernateTemplate().findByNamedQuery(queryName, values); } /** * 根据属性查询 * * @param property * @param value * @return */ @SuppressWarnings("unchecked") public List<T> findByProperty(String property, Object value) { return this.getHibernateTemplate().findByCriteria( DetachedCriteria.forClass(type()).add(Restrictions.eq(property, value))); } /** * 分页查询 * 注:不能满足要求子类重写该方法 * @param t * @param firstResult * @param maxResult * @return 返回分页查询的数据 */ @SuppressWarnings("unchecked") public List<T> findByPagination(final T t, final int firstResult, final int maxResult) { return getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session.createCriteria(type()); criteria.add(Example.create(t).enableLike(MatchMode.ANYWHERE)); criteria.setFirstResult(firstResult); criteria.setMaxResults(maxResult); return criteria.list(); } }); } /** * 分页统计查询 * * @param t * @return 一共有多少条数据 */ @SuppressWarnings("unchecked") public int countByPagination(final T t) { return (Integer) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session.createCriteria(type()); criteria.setProjection(Projections.rowCount()); criteria.add(Example.create(t).enableLike(MatchMode.ANYWHERE)); return criteria.uniqueResult(); } }); } |
|
返回顶楼 | |
发表时间:2008-12-25
啥也不用说 直接贴代码
|
|
返回顶楼 | |
发表时间:2008-12-25
这是一个子类的DAO代码
public class ClassInfoDAOImpl<T,PK extends Serializable> extends BaseDAOImpl<T,PK> implements ClassInfoDAO<T,PK> { @SuppressWarnings("unchecked") protected Class type() { return ClassInfo.class; } } |
|
返回顶楼 | |