JavaEE之分页

今天用所学的知识做了一个公司的结构管理,并采用pager-taglib做了一个分页。

点击总公司,下面会有好多分公司,分公司下面还有好多部门。

下面说一下具体的实现过程:

1.数据库设计。在数据库设计中有parent_id这样一个字段。主要标志它的父级机构的id。总公司的parent_id为空,分公司的parent_id为总公司的id,这样就可以用一个表实现公司结构的分机管理。

2.使用Hibernate中的关联对象,自己关联自己,来是实现这个功能。

具体在Org实体类总书写了关联属性,如下:

private Org parent;//关联对象
private Set<Org> children;

在映射文件总书写关联映射:

<many-to-one name="parent" column="parent_id" class="Org"/>
        <set name="children" order-by="total">
            <key column="parent_id"/>
            <one-to-many class="Org"/>
        </set>

3.实现类。采用hql语句分别查询在各种情况下的具体数据和数量(一级菜单下的具体数据和数量、二级....)。

最后把查询的结果返回给分页组件。主要代码如下:

if(pid==null){
            hql="from Org where parent.id is null";
            countHql="select count(*) from Org where parent.id is null";
            query=session.createQuery(hql);
            countQuery=session.createQuery(countHql);
        }else{
            hql="from Org where parent.id=?";
            countHql="select count(*) from Org where parent.id=?";
            query=session.createQuery(hql).setParameter(0, pid);
            countQuery=session.createQuery(countHql).setParameter(0, pid);
        }
        List<Org> rows=query.setFirstResult(offset).setMaxResults(pageSize).list();
        int total=Integer.parseInt(countQuery.uniqueResult().toString());
        pager.setRows(rows);
        pager.setTotal(total);
        return pager;

if里面的主要是查询一级菜单,第一句hql查询具体数据,第二条查询数量,else里面查询子菜单,hql语句和上面类似。最后根据具体结果给分页组件传递参数,完成分页。

4.分页。主要采用pager-taglib组件完成。具体代码如下:

<pg:pager url="listOrg" items="${pager.total }"  maxPageItems="${pager.pageSize }" export="curr=pageNumber">
          <pg:param name="id" value="${param.id}"/>
          <pg:first>
          <a href="${pageUrl}">首页</a>
          </pg:first>
          <pg:prev>
          <a href="${pageUrl }">上一页</a>
          </pg:prev>
          <pg:pages>
              <c:choose>
                  <c:when test="${curr==pageNumber}">
                  <span style='color:red'>${pageNumber }</span>
                  </c:when>
                  <c:otherwise>
                  <a href="${pageUrl }">${pageNumber }</a>
                  </c:otherwise>
              </c:choose>
          </pg:pages>
          <pg:next>
          <a href="${pageUrl }">下一页</a>
          </pg:next>
          <pg:last>
          <a href="${pageUrl }">尾页</a>
          </pg:last>
      </pg:pager>

在添加好jar包的情况下注解使用上面的代码,修改相关参数就能完成分页。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值