getHibernateTemplate详细分页

来源:互联网 发布:淘宝 双十一 编辑:程序博客网 时间:2024/05/01 20:41
public class PageHibernateDaoSupport extends HibernateDaoSupport {         /**     * 使用hql 语句进行分页查询操作     * @param hql 需要查询的hql语句     * @param offset 第一条记录索引     * @param pageSize 每页需要显示的记录数     * @return 当前页的所有记录     */    @SuppressWarnings("unchecked")    public List findByPage(final String hql,          final int offset, final int pageSize)    {         List list = getHibernateTemplate().executeFind(new HibernateCallback()            {                public Object doInHibernate(Session session)                    throws HibernateException, SQLException                {                    List result = session.createQuery(hql)                                         .setFirstResult(offset)                                         .setMaxResults(pageSize)                                         .list();                    return result;                }            });        return list;    }      /**     * 使用hql 语句进行分页查询操作     * @param hql 需要查询的hql语句     * @param value 如果hql有一个参数需要传入,value就是传入的参数     * @param offset 第一条记录索引     * @param pageSize 每页需要显示的记录数     * @return 当前页的所有记录     */    @SuppressWarnings("unchecked")    public List findByPage(final String hql , final Object value ,         final int offset, final int pageSize)    {         List list = getHibernateTemplate().executeFind(new HibernateCallback()            {                public Object doInHibernate(Session session)                    throws HibernateException, SQLException                {                    List result = session.createQuery(hql)                                         .setParameter(0, value)                                          .setFirstResult(offset)                                         .setMaxResults(pageSize)                                         .list();                    return result;                }            });        return list;    }      /**     * 使用hql 语句进行分页查询操作     * @param hql 需要查询的hql语句     * @param values 如果hql有多个个参数需要传入,values就是传入的参数数组     * @param offset 第一条记录索引     * @param pageSize 每页需要显示的记录数     * @return 当前页的所有记录     */    @SuppressWarnings("unchecked")    public List findByPage(final String hql, final Object[] values,         final int offset, final int pageSize)    {         List list = getHibernateTemplate().executeFind(new HibernateCallback()            {                public Object doInHibernate(Session session)                    throws HibernateException, SQLException                {                    Query query = session.createQuery(hql);                    for (int i = 0 ; i < values.length ; i++)                    {                        query.setParameter( i, values[i]);                    }                    List result = query.setFirstResult(offset)                                       .setMaxResults(pageSize)                                       .list();                    return result;                }            });        return list;    }         }


原创粉丝点击