zoukankan      html  css  js  c++  java
  • DaoImpl中实现查询分页-使用HibernateCallback来做更加方便

    /**
     * 
     */
    package com.wolfgang.dao;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import org.hibernate.HibernateException;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.springframework.orm.hibernate3.HibernateCallback;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    
    import com.wolfgang.VO.PageVO;
    
    /**
     * @author Administrator
     * 
     */
    public class BaseDaoImp extends HibernateDaoSupport implements IBaseDao {
    
        public Object get(Integer id) {
            return getHibernateTemplate().get(Object.class, id);
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see com.wolfgang.dao.IBaseDao#save(java.lang.Object)
         */
    
        public void save(Object obj) {
            getHibernateTemplate().save(obj);
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see com.wolfgang.dao.IBaseDao#update(java.lang.Object)
         */
    
        public void update(Object obj) {
            getHibernateTemplate().update(obj);
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see com.wolfgang.dao.IBaseDao#delete(java.lang.Object)
         */
        public void delete(Object obj) {
            getHibernateTemplate().delete(obj);
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see com.wolfgang.dao.IBaseDao#findById(int)
         */
        public <T> T findById(Class<T> className, int id) {
            return (T) getHibernateTemplate().get(className, id);
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see com.wolfgang.dao.IBaseDao#getAll(java.lang.Class)
         */
        public <T> List<T> getAll(Class<T> className) {
            return getHibernateTemplate().loadAll(className);
    
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see com.wolfgang.dao.IBaseDao#findPage(java.lang.String, int, int,
         * java.lang.Object[])
         */
        public PageVO findPage(final String hql, int offset, int pageSize,
                final Object... params) {
            final String totalHql = getTotalHql(hql);
            Long total = (Long) getHibernateTemplate().execute(
                    new HibernateCallback() {
    
                        public Object doInHibernate(Session session)
                                throws HibernateException, SQLException {
                            Query query = session.createQuery(totalHql);
                            return query.uniqueResult();
                        }
                    });
    
            List data = (List) getHibernateTemplate().execute(
                    new HibernateCallback() {
                        public Object doInHibernate(Session session)
                                throws HibernateException, SQLException {
    
                            Query query = session.createQuery(hql);
                            if (params != null) {
                                for (int i = 0; i < params.length; i++) {
                                    query.setParameter(i, params[i]);
                                }
                            }
                            
                            return query.list();
                        }
                    });
    
            PageVO pageVO = new PageVO();
            pageVO.setTotal(total);
            pageVO.setData(data);
            return pageVO;
        }
    
        private String getTotalHql(String hql) {
            int index = hql.indexOf(hql);
            if (index == -1) {
                return null;
            } else {
                return "select count(*)" + hql.substring(index);
            }
    
        }
    
    }
  • 相关阅读:
    结对第一次—原型设计(文献摘要热词统计)
    第一次作业-准备篇
    软件工程实践总结
    团队作业第二次—项目选题报告
    软工实践|结对第二次—文献摘要热词统计
    软工实践|结对第一次—原型设计(文献摘要热词统计)
    第一次作业-准备篇
    个人作业——软件工程实践总结作业
    团队作业第二次——项目选题报告
    结对第二次—文献摘要热词统计
  • 原文地址:https://www.cnblogs.com/unixshell/p/3418560.html
Copyright © 2011-2022 走看看