zoukankan      html  css  js  c++  java
  • 一个粗糙的分页

        由于组内要求做一个简单的查询页面,继整合mybatis之后又有一个分页功能。搜了下mybatis分页功能,基本是通过拦截器来拦截带有分页要求的sql请求,由于我个人对拦截器理解不足,加上需要更改配置文件等等,先自己模拟了个分页功能,具体思路是通过mysql自带的limit来进行指定位置指定数目的查询。

        首先说下limit的用法,很简单,有两个参数的情况下 limit param1,param2; 代表截取检索结果从第param1为止开始的param2个条目,这里就用到了这个用法。

        service层需要两个函数来支持:queryByConditions和queryCountByConditions,即按照条件查找信息列表和按照条件获取数目。
     
        public List<EleAccount> queryByConditions(String dueBillNo, String idNo, String custName, int location, int offset);
     
        public int queryCountByConditions(String dueBillNo, String idNo, String custName);
    service两个方法
        其中获取检索列表比获取数目多了两个参数:location和offset。location是根据前台传来的页码加上每页数目算出的检索起始位置,offset是每页显示数目,自己设定。
        前台传向controller的参数,除了平常的检索条件外,多一个curPage,表示当前页码。
        前台页面跳转部分,我显示了首页,当前页码-2到当前页码+2 尾页。具体前台分页部分代码:
            
    1 <c:if test = "${not empty results}"><a href="javascript:void(0);" onclick="submit(1)">首页</a></c:if>
    2         <c:if test = "${curPage-2>0}"><a href="javascript:void(0);" onclick="submit(${curPage-2})">${curPage-2}</a></c:if>
    3         <c:if test = "${curPage-1>0}"><a href="javascript:void(0);" onclick="submit(${curPage-1})">${curPage-1}</a></c:if>
    4         <c:if test = "${not empty results}">${curPage}</c:if>
    5         <c:if test = "${curPage+1<=totalPage}"><a href="javascript:void(0);" onclick="submit(${curPage+1})">${curPage+1}</a></c:if>
    6         <c:if test = "${curPage+2<=totalPage}"><a href="javascript:void(0);" onclick="submit(${curPage+2})">${curPage+2}</a></c:if>
    7         <c:if test = "${curPage+1<=totalPage}"><a href="javascript:void(0);" onclick="submit(${curPage+1})">下一页</a></c:if>
    8         <c:if test = "${not empty results}"><a href="javascript:void(0);" onclick="submit(${totalPage})">尾页</a></c:if>
    result.jsp
        通过c:if标签控制是否显示对应的页码,curPage即当前页码。submit(curPage)函数如下:
         
    1 var curPage = document.getElementById("curPage");
    2      var submitButton = document.getElementById("submit");
    3       function submit(curPageInt){
    4           curPage.value = curPageInt;
    5           submitButton.click();
    6       }
    submit方法
        controller部分如下:
            
     1 public ModelAndView result(@RequestParam("dueBillNo")String dueBillNo, 
     2             @RequestParam("custName")String custName, 
     3             @RequestParam("idNo")String idNo,
     4             @RequestParam("curPage")Integer curPage){
     5         Integer pageSize = 10;
     6         if(curPage == null||curPage == 0){
     7             curPage = 1;
     8         }
     9         //查询所需结果
    10         Integer size = eleAccountService.queryCountByConditions(dueBillNo, idNo, custName);
    11         Integer totalPage = 0;
    12         if(size%pageSize == 0){
    13             totalPage = size/pageSize;
    14         }else{
    15             totalPage = size/pageSize + 1;
    16         }
    17         List<EleAccount> eleAccounts = eleAccountService.queryByConditions(dueBillNo, idNo, custName, (curPage-1)*pageSize, pageSize);
    18         ModelMap modelMap = new ModelMap();
    19         modelMap.put("curPage", curPage);
    20         modelMap.put("totalPage", totalPage);
    21         modelMap.put("dueBillNo", dueBillNo);
    22         modelMap.put("custName", custName);
    23         modelMap.put("idNo", idNo);
    24         modelMap.put("results", eleAccounts);
    25         return new ModelAndView("/result",modelMap);
    26     }
    QueryController
     
        实现方法因为是自己想的,所以做的比较粗糙,而且如果有多个分页的话,这样实现有点麻烦,具体如何优化,看以后有什么思路吧~
  • 相关阅读:
    抚琴弹唱东流水
    借点阳光给你
    日月成双行影单
    一夜飘雪入冬来
    悼念钱学森
    我的青春谁作主
    重游望江楼有感
    雪后暖阳
    满城尽添黄金装
    敢叫岁月不冬天
  • 原文地址:https://www.cnblogs.com/kangyun/p/5474008.html
Copyright © 2011-2022 走看看