分页查询PageBean的一种写法

本文介绍了如何使用PageBean进行分页查询,包括PageBean的属性分析,如总记录数、当前页数、总页数和分页大小,以及如何在Hibernate中结合DetachedCriteria进行分页操作,并在JSP页面上利用Struts的功能展示分页结果。

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

1 分页查询PageBean

1.1 由于我们需要在很多界面上使用分页查询功能,所以我们就需要使用一个通用的类来实现该分页的能力了

1.2 PageBean分析

  • 我们需要几个基本的属性来描述该PageBean
    • totalCount,总记录数,需要查询得出
    • currPage,当前页数,由前台传入,默认为1
    • totalPage,总页数由总记录数和分页大小计算得出
    • pageSize,分页大小,自由设置,可默认为10
    • List list,分页内容实体集合,分页查询后插入

1.3 PageBean代码

/**
 * 分页对象
 */
public class PageBean<T>
{
    /**
         * 总记录数
     */
    private Integer totalCount;
    /**
         * 当前页
     */
    private Integer currPage;
    /**
         * 总页数
     */
    private Integer totalPage;
    /**
         * 每页记录数
     */
    private Integer pageSize;
    /**
         * 分页内容
     */
    private List<T> list;
    public Integer getCurrPage()
    {
        return currPage;
    }
    public void setCurrPage(Integer currPage)
    {
        // 默认当前页为首页
        if(currPage==null) {
            currPage=1;
        }
        this.currPage = currPage;
    }
    
    public Integer getTotalCount()
    {
        return totalCount;
    }
    public void setTotalCount(Integer totalCount)
    {
        this.totalCount = totalCount;
    }
    public Integer getTotalPage()
    {
        return totalPage;
    }
    public void setTotalPage(Integer totalPage)
    {
        this.totalPage = totalPage;
    }
    public Integer getPageSize()
    {
        return pageSize;
    }
    public void setPageSize(Integer pageSize)
    {
        // 默认每页10条数据
        if(pageSize==null) {
            pageSize=10;
        }
        this.pageSize = pageSize;
    }
    public List<T> getList()
    {
        return list;
    }
    public void setList(List<T> list)
    {
        this.list = list;
    }
    @Override
    public String toString()
    {
        return "PageBean [totalCount=" + totalCount + ", currPage=" + currPage + ", totalPage=" + totalPage
                + ", pageSize=" + pageSize + ", list=" + list + "]";
    } 
}

1.4 使用PageBean做分页查询,我这里是用来Hibernate的离线查询DetachedCriteria

 public PageBean<Customer> findAll(DetachedCriteria criteria, Integer pageSize, Integer currPage)
    {
        PageBean<Customer> pageBean=new PageBean<Customer>();
        pageBean.setCurrPage(currPage);
        pageBean.setPageSize(pageSize);
        Integer count=customerDao.findCount(criteria);
        pageBean.setTotalCount(count);
//        pageBean.setTotlePage(pageBean.getTotleSize()%pageBean.getPageSize()==0?pageBean.getTotleSize()/pageBean.getPageSize():pageBean.getTotleSize()/pageBean.getPageSize()+1);
        Double ceil = Math.ceil(1.0*pageBean.getTotalCount()/pageBean.getPageSize());
        pageBean.setTotalPage(ceil.intValue());
        // 清空查询条件
        criteria.setProjection(null);
        Integer begin=(pageBean.getCurrPage()-1)*pageBean.getPageSize();
        List<Customer> list=customerDao.findByPage(criteria,begin,pageBean.getPageSize());
        pageBean.setList(list);
        return pageBean;
    }

1.5 JSP中使用分页,我这里使用了struts的功能

<SCRIPT language=javascript>
	function to_page(page){
		if(page){
			$("#page").val(page);
		}
		document.customerForm.submit();
	}
</SCRIPT>
<DIV style="LINE-HEIGHT: 20px; HEIGHT: 20px; TEXT-ALIGN: right">[<B><s:property value="totalCount"/></B>]条记录,
	[<B><s:property value="totalPage"/></B>]页,
	每页显示
		<select name="pageSize" onchange="to_page()">
		<option value="3"  <s:if test="pageSize == 3">selected</s:if>>3</option>
		<option value="5" <s:if test="pageSize == 5">selected</s:if>>5</option>
		<option value="10" <s:if test="pageSize == 10">selected</s:if>>10</option>
		</select><s:if test="currPage != 1">
		[<A href="javascript:to_page(1)">首页</A>]
		[<A href="javascript:to_page(<s:property value="currPage-1"/>)">前一页</A>]
	</s:if>&nbsp;&nbsp;
	<B>
	<s:iterator var="i" begin="1" end="totalPage">
		<s:if test="#i == currPage">
			<s:property value="#i"/>
		</s:if>
		<s:else>
			<a href="javascript:to_page(<s:property value="#i"/>)"><s:property value="#i"/></a>
		</s:else>
	</s:iterator>

	</B>&nbsp;&nbsp;
	<s:if test="currPage != totalPage">
		[<A href="javascript:to_page(<s:property value="currPage+1"/>)">后一页</A>] 
		[<A href="javascript:to_page(<s:property value="totalPage"/>)">尾页</A>]
	</s:if><input type="text" size="3" id="page" name="currPage" /><input type="button" value="Go" onclick="to_page()"/>
</DIV>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值