栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springmvc 分页查询的简单实现示例代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springmvc 分页查询的简单实现示例代码

目前较常用的分页实现办法有两种:

1.每次翻页都修改SQL,向SQL传入相关参数去数据库实时查出该页的数据并显示。

2.查出数据库某张表的全部数据,再通过在业务逻辑里面进行处理去取得某些数据并显示。

对于数据量并不大的简单的管理系统而言,第一种实现方法相对来说容易使用较少的代码实现分页这一功能,本文也正是为大家介绍这种方法:

代码片段:

1,Page.java

package com.cm.contract.common; 
 
import org.apache.commons.lang.StringUtils; 
import org.apache.commons.lang.builder.ToStringBuilder; 
 
 
 
 
public class Page implements java.io.Serializable{ 
   
  private static final long serialVersionUID = 1L; 
  //前一页 
  private Boolean hasPrePage; 
  //后一页 
  private Boolean hasNextPage; 
  //每页显示多少条:默认20条 
  private Long everyPage = 20L; 
  //总页数 
  private Long totalPage; 
  //当前第多少页:默认第1页 
  private Long currentPage = 1L; 
  //开始下标 
  private Long beginIndex; 
  //结束下标 
  private Long endinIndex; 
  //总共多少条 
  private Long totalCount;   
  //排序列名 
  private String sortName;   
  //排序状态 
  private String sortState;   
  //排序信息 
  private String sortInfo; 
  //是否排序 
  private Boolean sort = false; 
  private String defaultInfo = " "; 
   
   
   
  public String getDefaultInfo() { 
    return defaultInfo; 
  } 
 
  public void setDefaultInfo(String defaultInfo) { 
    this.defaultInfo = defaultInfo; 
  } 
 
  public String getSortInfo() { 
    return sortInfo; 
  } 
 
  public void setSortInfo(String sortInfo) { 
    this.sortInfo = sortInfo; 
  } 
 
  public String getSortName() { 
    return sortName; 
  } 
 
  public void setSortName(String sortName) { 
    setPageSortState(sortName);    
  } 
 
  public String getSortState() { 
    return sortState; 
  } 
 
  public void setSortState(String sortState) { 
    this.sortState = sortState; 
  } 
 
   
  public Page() { 
  } 
 
   
  public Page(Long totalRecords){    
    this.totalCount = totalRecords; 
    setTotalPage(getTotalPage(totalRecords));    
  } 
   
   
  public Page(Long everyPage,Long totalRecords){  
    this.everyPage = everyPage; 
    this.totalCount = totalRecords; 
    setTotalPage(getTotalPage(totalRecords));    
  } 
   
   
  public void pageState(int index,String value) {  
    sort = false; 
    switch (index) { 
    case 0 :setEveryPage(Long.parseLong(value));break; 
    case 1 :first();break; 
    case 2: previous();break; 
    case 3: next();break; 
    case 4: last();break; 
    case 5: sort = true;sort(value);break; 
    case 6 ://到指定第多少页 
      setCurrentPage(Long.parseLong(value)); 
      break;      
    } 
  } 
 
   
  private void first() { 
    currentPage = 1L; 
  } 
 
  private void previous() { 
    currentPage--; 
  } 
 
  private void next() { 
    currentPage++; 
  } 
 
  private void last() { 
    currentPage = totalPage; 
  } 
 
  private void sort(String sortName) {     
    //设置排序状态 
    setPageSortState(sortName);    
  } 
     
   
   
   
  private Long getTotalPage(Long totalRecords) { 
     Long totalPage = 0L;   
     everyPage = everyPage == null ? 10L : everyPage; 
     if (totalRecords % everyPage == 0) 
      totalPage = totalRecords / everyPage; 
     else { 
      totalPage = totalRecords / everyPage + 1; 
     } 
     return totalPage; 
  }   
   
 
  public Long getBeginIndex() { 
    this.beginIndex = (currentPage - 1) * everyPage; 
    return this.beginIndex; 
  } 
 
  public void setBeginIndex(Long beginIndex) { 
    this.beginIndex = beginIndex; 
  } 
 
  public Long getCurrentPage() { 
    this.currentPage = currentPage == 0 ? 1 : currentPage; 
    return this.currentPage; 
  } 
 
  public void setCurrentPage(Long currentPage) { 
    if(0 == currentPage){ 
      currentPage = 1L; 
    } 
    this.currentPage = currentPage; 
  } 
 
  public Long getEveryPage() { 
    this.everyPage = everyPage == 0 ? 10 : everyPage; 
    return this.everyPage; 
  } 
 
  public void setEveryPage(Long everyPage) {    
    this.everyPage = everyPage; 
  } 
 
  public Boolean getHasNextPage() { 
    this.hasNextPage = (currentPage != totalPage) && (totalPage != 0); 
    return this.hasNextPage; 
  } 
 
  public void setHasNextPage(Boolean hasNextPage) { 
    this.hasNextPage = hasNextPage; 
  } 
 
  public Boolean getHasPrePage() { 
    this.hasPrePage = currentPage != 1; 
    return this.hasPrePage; 
  } 
 
  public void setHasPrePage(Boolean hasPrePage) { 
    this.hasPrePage = hasPrePage; 
  } 
 
  public Long getTotalPage() { 
    return this.totalPage; 
  } 
 
  public void setTotalPage(Long totalPage) { 
    if(this.currentPage > totalPage){ 
      this.currentPage = totalPage; 
    } 
    this.totalPage = totalPage; 
  } 
 
  public Long getTotalCount() { 
    return this.totalCount; 
  } 
 
  public void setTotalCount(Long totalCount) { 
    setTotalPage(getTotalPage(totalCount));  
    this.totalCount = totalCount; 
  } 
 
  @Override 
  public String toString() { 
    return ToStringBuilder.reflectionToString(this); 
  } 
   
   
  private void setPageSortState(String newPageSortName){    
    //判断之前的排序字段是否为空 
    if(StringUtils.isEmpty(sortName)){ 
      //默认排序为升序 
      this.sortState = PageUtil.ASC;    
      this.sortInfo = PageUtil.PAGE_ASC;     
    }else{ 
      if(StringUtils.equalsIgnoreCase(newPageSortName, sortName)){ 
 //判断sortState排序状态值 
 if(StringUtils.equalsIgnoreCase(sortState, PageUtil.ASC)){ 
   this.sortState = PageUtil.DESC; 
   this.sortInfo = PageUtil.PAGE_DESC;  
 }else{ 
   this.sortState = PageUtil.ASC; 
   this.sortInfo = PageUtil.PAGE_ASC;   
 }  
      }else{ 
 //默认 
 this.sortState = PageUtil.ASC;    
 this.sortInfo = PageUtil.PAGE_ASC; 
      } 
    } 
    sortName = newPageSortName.toLowerCase();
  } 
 
  public Boolean isSort() { 
    return sort; 
  } 
 
  public void setSort(Boolean sort) { 
    this.sort = sort; 
  } 
 
 
  public Long getEndinIndex() { 
    this.endinIndex = (currentPage) * everyPage; 
    return endinIndex; 
  } 
 
  public void setEndinIndex(Long endinIndex) { 
    this.endinIndex = endinIndex; 
  }   
} 

2.PageState.java

package com.cm.contract.common; 
 
import org.apache.commons.lang.StringUtils; 
 
 
 
 
 
public enum PageState { 
   
   
  SETPAGE, 
   
  FIRST,  
   
  PREVIOUS,  
   
  NEXT,  
   
  LAST,  
   
  SORT, 
   
  GOPAGE; 
 
   
   
  public static int getOrdinal(String value) { 
    int index = -1; 
    if (StringUtils.isEmpty(value)) { 
      return index; 
    } 
    String newValue = StringUtils.trim(value).toUpperCase(); 
    try { 
      index = valueOf(newValue).ordinal(); 
    } catch (IllegalArgumentException e) {} 
    return index; 
  } 
} 

3.PageUtil.java

 
public class PageUtil { 
   
  public static final String ASC = "asc"; 
  public static final String DESC = "desc"; 
  public static final String PAGE_DESC = "↓"; 
  public static final String PAGE_ASC = "↑"; 
  public static final String PAGE_NULL = " ";  
  public static final String SESSION_PAGE_KEY = "page";   
   
   
   
  public static Page inintPage(Long totalCount,Integer index,String value,Page sessionPage){  
    Page page = null; 
    if(index < 0){ 
page = new Page(totalCount); 
    }else{ 
 
Long everPage = null == value ? 10 : Long.parseLong(value); 
 
page = sessionPage; 
page.setEveryPage(everPage); 
page.setTotalCount(totalCount);
    }   
    return page;     
  } 
   
   
 
   
   
  public static Page execPage(int index,String value,Page sessionPage){  
    Page page = sessionPage;
     
    page.pageState(index,value);     
    return page;     
  } 
 
} 

4.DefaultController.java  此部分可以灵活使用

package com.cm.contract.common; 
 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 
 
import org.springframework.web.bind.annotation.ModelAttribute; 
 
 
public class DefaultController { 
 
   
  protected Page executePage(HttpServletRequest request, Long totalCount) { 
    if (null == totalCount) { 
      totalCount = 0L; 
    } 
     
    String pageAction = request.getParameter("pageAction"); 
    String value = request.getParameter("pageKey"); 
 
     
    int index = PageState.getOrdinal(pageAction); 
 
    Page page = null; 
     
    Page sessionPage = getPage(request); 
 
    if (index < 1) { 
      page = PageUtil.inintPage(totalCount, index, value, sessionPage); 
    } else { 
      page = PageUtil.execPage(index, value, sessionPage); 
    } 
    setSession(request, page); 
    return page; 
  } 
 
  private Page getPage(HttpServletRequest request) { 
    Page page = (Page) request.getSession().getAttribute( 
 PageUtil.SESSION_PAGE_KEY); 
    if (page == null) { 
      page = new Page(); 
    } 
    return page; 
  } 
 
  private void setSession(HttpServletRequest request, Page page) { 
    request.getSession().setAttribute(PageUtil.SESSION_PAGE_KEY, page); 
  } 
} 

使用方法:

5,Controller.java

 
@Controller 
public class CMLogController extends DefaultController { 
@RequestMapping("index.do") 
  public ModelAndView userInto(ModelMap model, String username) { 
    nameStr = username; 
    model.addAttribute("username", nameStr); 
    // 分页数 
    Long totalCount = logService.pageCounts(model); 
    // 分页显示 
    Page page = executePage(request, totalCount); 
    if (page.isSort()) { 
      model.put("orderName", page.getSortName()); 
      model.put("descAsc", page.getSortState()); 
    } else { 
      model.put("orderName", "logtime"); 
      model.put("descAsc", "desc"); 
    } 
    model.put("startIndex", page.getBeginIndex()); 
    model.put("endIndex", page.getEndinIndex()); 
    ModelAndView mv = new ModelAndView(); 
    // 分页查询 
    logList = logService.pageList(model); 
    mv.addObject("logList", logList); 
    mv.setViewName("/jsp/log"); 
    return mv; 
  }} 

6.maybatis中几条查询语句

//分页查询 
   
     
    select ttt.* from(select tt.*,rownum rn from(select * from CM_LOG 
          
       
  
 and username like '%${username}%'    
       
 
  
 AND TYPE = #{type,jdbcType=VARCHAR}    
       
       
     order by ${orderName} ${descAsc} )tt)ttt 
       
       
 rn > ${startIndex}    
        
       
    
         
           
 
// 分页数 
  

7.前台页面index.jsp

//只需在页面布局添加该div 
  //username 为条件  
  //     不带条件的方式 问号必须存在 
 
   
       
        
 
  
     
 
     

8,引用的Page.jsp

  <%@ page language="java" contentType="text/html; charset=UTF-8" 
  pageEncoding="UTF-8"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
 
 
 
 
 
 
   
  ${urlParams } 
    共${page.totalCount}条记录 共${page.totalPage}页 每页显示${page.everyPage}条 
    当前第${page.currentPage}页  
     
       
 <<首页 <上页  
       
       
 <<首页   
 <上一页 
       
     
     ||  
     
       
  下页> 尾页>> 
       
       
 下一页>   
 末页>> 
       
     
      
     
      
    每页显示: 
   
 
 
   
 
 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/148201.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号