zoukankan      html  css  js  c++  java
  • java--Hibernate实现分页查询

    首先在Action类定义当前页的值

    private Integer currPage = 1
    setter,getter

    在spring IOC容器进行注入该变量

    在Action类写一个findAll方法,里面有个findByPage()方法

     Service层实现:

    //分页查询部分方法
        public PageBean<Department> findByPage(Integer currPage) {
            PageBean<Department> pageBean = new PageBean<Department>();
            //封装当前页数
            pageBean.setCurrPage(currPage);
            //封装每页显示的记录数
            int pageSize = 3;
            pageBean.setPageSize(pageSize);
            //封装总记录数
            int totalCount = departmentDao.findCount();
            double tc = totalCount;
            pageBean.setTotalCount(totalCount);
            //封装总页数
            Double totalPage = Math.ceil(tc/pageSize);
            pageBean.setTotalPage(totalPage.intValue());
            //封装每页显示的数据
            int begin = (currPage-1) * pageSize;
            java.util.List<Department> depts = departmentDao.findByPage(begin,pageSize);
            pageBean.setList(depts);
            return pageBean;
        }

    findAll方法里调用Service层的方法返回一个复杂的集合(有当前页,和查询得到的信息集合),这个集合我们创建一个类pageBean来管理

    package cn.nyan.domain;
    
    import java.util.List;
    
    /**
     * 分页封装的类
     * @author Administrator
     *
     */
    public class PageBean<T> {
        private int currPage;
        private int pageSize;//每页显示的记录数
        private int totalCount;//总的记录数
        private int totalPage;//总页数
        private List<T> list;//每页显示的数据
    getter/setter

     Dao层实现总记录数的查询和对象的总记录集合

    @Override
        public int findCount() {
            String hql = "select count(*) from Department";
            List<Long> list = this.getHibernateTemplate().find(hql);
            if(list.size()>0){
                return list.get(0).intValue();
            }
            return 0;
        }
    
        @Override
        public List<Department> findByPage(int begin, int pageSize) {
            DetachedCriteria criteria = DetachedCriteria.forClass(Department.class);
            List<Department> list = this.getHibernateTemplate().findByCriteria(criteria, begin, pageSize);
            return list;
        }

     返回的pageBean通过Action返回页面,将pageBean放入ActionContext值栈中,使用OGNL表达式进行取值

    public String findAll(){
            PageBean<Department> pageBean = departmentService.findByPage(currPage);
            //将pageBean放入值栈中
            ActionContext.getContext().getValueStack().push(pageBean);
            return "findAll";
        }

     在页面读取:

    <table cellspacing="0" border="1" class="table1">
    
    <thead>
       <tr><th width="450">部门名称</th><th  width="450">编辑</th></tr>
    </thead>
    
    <!-- 获取pageBean对象属性 -->
    <s:iterator value="list" var="department">
        <tbody>
            <tr>
                <td align="center"><s:property value="#department.dname"/></td>
                <td align="center"><a href="editDept.jsp"><img src="${pageContext.request.contextPath }/images/edit.png"></a></td>
            </tr>
        </tbody>
    </s:iterator>
    
    </table>
    <br/>
    
    
    <table border="0" cellspacing="0" cellpadding="0"  width="900px">
    <tr>
    <td align="right">
       <span><s:property value="currPage"/>/<s:property value="totalPage"/></span>
       <span>
       <s:if test="currPage != 1">
           <a href="${pageContext.request.contextPath }/department_findAll.action?currPage=1">[首页]</a>&nbsp;&nbsp;
           <a href="${pageContext.request.contextPath }/department_findAll.action?currPage=<s:property value="currPage-1"/>">[上一页]</a>&nbsp;&nbsp;
        </s:if>
        <s:if test="currPage != totalPage">
           <a href="${pageContext.request.contextPath }/department_findAll.action?currPage=<s:property value="currPage+1"/>">[下一页]</a>&nbsp;&nbsp;
           <a href="${pageContext.request.contextPath }/department_findAll.action?currPage=<s:property value="totalPage"/>">[尾页]</a>&nbsp;&nbsp;
       </s:if>
       </span>
    </td>
    </tr>
    </table>
  • 相关阅读:
    Java Web(5) Spring 下使用Junit4 单元测试
    聊聊单元测试(三)——Spring Test+JUnit完美组合
    浅谈ELK日志分析平台
    ELK 实现 Java 分布式系统日志分析架构
    ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
    开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)入门学习资源索引
    自动补全下拉框(可输入匹配的下拉框)
    这是一篇满载真诚的微信小程序开发干货
    微服务化的多组件项目,跨地域、分布式版本管理和发布方式
    解放双手,发掘更大的价值:智能化运维
  • 原文地址:https://www.cnblogs.com/Nyan-Workflow-FC/p/6494531.html
Copyright © 2011-2022 走看看