分享到:
发表于 2013-07-19 09:22:27 楼主 | |
通过这些复杂的过程,我们可以获取反射序列化的具体Class实例类型,这样就可以通过该Class实例来获取具体查询的结果集合。 因此实现类的代码大致如下: public class GenericHibernateDao extends HibernateDaoSupport implements IGenericDao Class public GenericHibernateDao() { this.persistentClass=(Class } public Class return persistentClass; } public void setPersistentClass(Class this.persistentClass = persistentClass; } @Override public T create(T entity) { return (T) this.getHibernateTemplate().save(entity); } @Override public void delete(ID id) { System.out.println("IDD "+id); this.getHibernateTemplate().delete(this.findById(id)); } @Override public void update(T entity) { this.getHibernateTemplate().update(entity); } @Override public T findById(ID id) { return this.getHibernateTemplate().get(persistentClass, id); } @Override public List return this.getHibernateTemplate().loadAll(persistentClass); } @Override public List return this.getHibernateTemplate().find(hql, param); } @Override public PageBean findByPageBean(final String hql,final Object[] param,final int currentpage,final int pageSize) { return this.getHibernateTemplate().execute(new HibernateCallback @Override public PageBean doInHibernate(Session session)throws HibernateException, SQLException { PageBean pb=new PageBean(); Query qu=session.createQuery(hql); if(param.length>0){ for (int i = 0; i < param.length; i++) { qu.setParameter(i, param); } } qu.setFirstResult((currentpage-1)*pageSize); qu.setMaxResults(pageSize); pb.setData(qu.list()); qu=session.createQuery("select count(*) "+hql.substring(hql.toLowerCase().indexOf("from"))); if(param.length>0){ for (int j = 0; j < param.length; j++) { qu.setParameter(j, param[j]); } } pb.setTotalRows(Integer.parseInt(qu.uniqueResult().toString())); pb.setCurrentPage(currentpage); pb.setPageSize(pageSize); return pb; } }); } @Override public void bulkUpdate(String bulk, Object[] param) { this.getHibernateTemplate().bulkUpdate(bulk,param); } @Override public Integer countByObject(final String hql,final Object[] param) { return this.getHibernateTemplate().execute(new HibernateCallback @Override public Integer doInHibernate(Session session)throws HibernateException, SQLException { Query qu=session.createQuery(hql); for (int i = 0; i < param.length; i++) { qu.setParameter(i, param); |
|
楼主热贴
个性签名:无
|
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见