ssh中分页

来源:互联网 发布:sqlserver存储过程if 编辑:程序博客网 时间:2024/05/18 03:24

1.写一个JavaBean

import java.util.List;public class PageBean {    private Integer currentPage;//当前页    private Integer totalPage;//总页数    private Integer totalCount;//总纪录数    private Integer pageCount;//每页记录数    private Integer begin;//开始位置    private List<Reader> listReader;//每页显示的集合       //生成set、get方法    //....}

2.action中使用属性封装获取

//使用属性封装获取    private Integer currentPage =1;    public Integer getCurrentPage() {        return currentPage;    }    public void setCurrentPage(Integer currentPage) {        this.currentPage = currentPage;    }    public String listByPage(){        PageBean pageBean = readerService.listByPage(currentPage);        ServletActionContext.getRequest().setAttribute("pageBean", pageBean);        return "listByPage";    }

3.service层写逻辑

public PageBean listByPage(Integer currentPage) {        //创建PageBean对象        PageBean pageBean = new PageBean();        //当前页        pageBean.setCurrentPage(currentPage);        //总记录数        int totalCount = readerDao.findCount();        pageBean.setTotalCount(totalCount);        //每页显示记录数        int pageSize = 3;//自己设置        //总页数=总记录数除以每页显示记录数        int totalPage = 0;        if(totalCount%pageSize==0){//如果能整除            totalPage = totalCount/pageSize;        }else{//如果不能整除            totalPage = totalCount/pageSize+1;        }        //封装到PageBean中        pageBean.setTotalPage(totalPage);        //开始位置=(当前页-1)*每页纪录数        int begin = (currentPage-1)*pageSize;        //每页纪录的list集合        List<Reader> list = readerDao.findByPage(begin,pageSize);        pageBean.setListReader(list);        return pageBean;    }

4.dao层实现

//查询总记录数public int findCount() {        List<Object> list = (List<Object>) this.getHibernateTemplate().find("select count(*) from Reader");        if(list.size()!=0&&list!=null){            Object obj = list.get(0);            Long lobj = (Long)obj;            int count = lobj.intValue();            return count;        }        return 0;    }//查询分页的listpublic List<Reader> findByPage(int begin, int pageSize) {        //第一种方法:使用hibernate底层代码实现        //得到sessionFactory//      SessionFactory sessionFactory = this.getHibernateTemplate().getSessionFactory();//       //得到session对象//      Session session = sessionFactory.getCurrentSession();//      //设置分页的信息//      Query query = session.createQuery("from Reader");//      query.setFirstResult(begin);//      query.setMaxResults(pageSize);//      List<Reader> list = query.list();        //第二种方法:使用离线对象和hibernateTemplate的方法实现        //1.创建离线对象,设置对哪个实体类进行操作        DetachedCriteria criteria = DetachedCriteria.forClass(Reader.class);        //2.调用HibernateTemplate中的方法        //第一个参数是离线对象,第二个参数是开始位置,第三个参数是每页记录数        List<Reader> list = (List<Reader>) this.getHibernateTemplate()                .findByCriteria(criteria, begin, pageSize);        return list;    }

5.jsp页面显示

<body><table>        <tr>            <td>读者名称</td>            <td>读者地址</td>            <td>读者手机</td>        </tr>        <c:forEach items="${pageBean.listReader }" var="reader">            <tr>                <td>${reader.readName }</td>                <td>${reader.address }</td>                <td>${reader.readPhone }</td>                <td><a href="${pageContext.request.contextPath }/reader_change.action?id=${reader.rid}">修改</a></td>            </tr>        </c:forEach>        </table>    <div style="line-height: 20px;height:20px;text-align:right">        共[<b>${pageBean.totalCount }</b>]条记录,共[<b>${pageBean.totalPage }</b>]页,        当前第[<b>${pageBean.currentPage }</b>]页        <!-- 前一页表示当前页减一            判断如果是第一页,就没有前一页         -->         <c:if test="${pageBean.currentPage!=1 }">            [<a href="${pageContext.request.contextPath }/reader_listByPage.action?currentPage=${pageBean.currentPage-1}">前一页</a>]         </c:if>        <!-- 当前页+1             如果最后一页就没有后一页        -->        <c:if test="${pageBean.currentPage!=pageBean.totalPage }">            [<a href="${pageContext.request.contextPath }/reader_listByPage.action?currentPage=${pageBean.currentPage+1}">后一页</a>        </c:if>        </div></body>
原创粉丝点击