jsf+hibernate开发小项目杂谈(五)

本文介绍Hibernate框架下利用Criteria对象进行分页查询的方法,并提供具体的Java代码示例。此外,还介绍了如何通过JSP页面使用dataScroller组件来实现翻页功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

五、数据分页与翻页控件
    - hibernate支持分页,其实现原理读者可查阅[5]。下面给出一个利用Criteria对象来分页查询的代码片断:
    // 默认只有一个条件查询在基类中定义,新增查询方法在子类中新增
    public List findEntities(Object vo, int startRow, int pageSize)
            throws BaseException {
        Session session = HibernateSessionFactory.getSession();

        Criteria crit = buildCriteria(session, vo); // 创建Criteria对象
        crit.setFirstResult(startRow); // 开始行指针
        crit.setMaxResults(pageSize); // 每页的记录数

        List list = crit.list();
        session.close();

        return list;
    }

    // 统计满足条件的记录行数
    public int countEntities(Object vo, int startRow, int pageSize)
            throws BaseException {
        Session session = HibernateSessionFactory.getSession();

        Criteria crit = buildCriteria(session, vo);
        crit.setProjection(Projections.rowCount()); // 统计记录数

        Integer cnt = (Integer) crit.uniqueResult();
        session.close();

        return cnt.intValue(); // 返回满足查询条件的记录行数
    }

    - 继承DataModel类
    public abstract class PagedListDataModel extends DataModel {
        // ... 实现代码参考[4]
    }

    - jsp页面使用翻页控件dataScroller[]
    <h:dataTable border="1" id="data" ...></h:dataTable>

    <t:dataScroller id="scroll_1" for="data" fastStep="10" paginator="true" paginatorMaxPages="9">
        <f:facet name="first"> <t:graphicImage url="images/arrow-first.gif" border="1" /> </f:facet>
        <f:facet name="last"> <t:graphicImage url="images/arrow-last.gif" border="1" /> </f:facet>
        <f:facet name="previous"> <t:graphicImage url="images/arrow-previous.gif" border="1" /> </f:facet>
        <f:facet name="next"> <t:graphicImage url="images/arrow-next.gif" border="1" /> </f:facet>
        <f:facet name="fastforward"> <t:graphicImage url="images/arrow-ff.gif" border="1" /> </f:facet>
        <f:facet name="fastrewind"> <t:graphicImage url="images/arrow-fr.gif" border="1" /> </f:facet>
    </t:dataScroller>

    注意dataScroller的for属性必须指定为dataTable的id。另外要保存图标文件到网址的images目录下面。

    问题:页面跳转后回到分页页面时,如何恢复到原来所在的页码?(待解决) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值