初學Springmvc+mybatis實現分頁

轉自:https://blog.csdn.net/qq_34059693/article/details/78491513
首先建一個分頁的實體類:

public class Page implements Serializable{
                private static final long serialVersionUID=1L;

                private int pageNow=1;      //當前也是

                private int pageSize=8;     //每頁顯示的數量

                private int totalCount;     //總記錄數

                private int totalPageCount;      //總頁數

                private int startPos;        //開始位置,從0開始

                private boolean hasFrist;      //是否有首頁

                private boolean hasPre;     //是否有前一頁

                private boolean hasNext;     //是否有後一頁

                private boolean hasLast;     //是否有尾頁

                /**
                 * 通過構造函數,傳入總記錄數和當前頁
                 * @param pageNow
                 * @param totalCount
                 */
                public Page(int pageNow, int totalCount) {
                    super();
                    this.pageNow = pageNow;
                    this.totalCount = totalCount;
                }
                //獲取總頁數
                public int getTotalPageCount() {
                    totalPageCount=getTotalCount()/getPageSize();
                    return (totalCount/pageSize==0) ? totalPageCount:totalPageCount+1;
                }

                public void setTotalPageCount(int totalPageCount) {
                    this.totalPageCount = totalPageCount;
                }

                public int getPageNow() {
                    return pageNow;
                }

                public void setPageNow(int pageNow) {
                    this.pageNow = pageNow;
                }

                public int getPageSize() {
                    return pageSize;
                }

                public void setPageSize(int pageSize) {
                    this.pageSize = pageSize;
                }

                public int getTotalCount() {
                    return totalCount;
                }

                public void setTotalCount(int totalCount) {
                    this.totalCount = totalCount;
                }
                //取得選擇記錄的初始位置
                public int getStartPos() {
                    return (pageNow-1)*pageSize;
                }

                public void setStartPos(int startPos) {
                    this.startPos = startPos;
                }
                //判斷是否有第一頁
                public boolean isHasFrist() {
                    return (pageNow==1) ? false:true;
                }

                public void setHasFrist(boolean hasFrist) {
                    this.hasFrist = hasFrist;
                }
                //如果有首頁就有前一頁
                public boolean isHasPre() {
                    return isHasFrist() ? true:false;
                }

                public void setHasPre(boolean hasPre) {
                    this.hasPre = hasPre;
                }
                //如果有尾頁就有下一頁
                public boolean isHasNext() {
                    return isHasNext() ? true:false;
                }

                public void setHasNext(boolean hasNext) {
                    this.hasNext = hasNext;
                }
                //判斷是否有尾頁
                public boolean isHasLast() {
                    return (pageNow==getTotalCount()) ? false:true;
                }

                public void setHasLast(boolean hasLast) {
                    this.hasLast = hasLast;
                }

實體類每個屬性的意思都加了註釋
再到mapper層寫分頁sql

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sdl.mapper.NewsMapper">
            <select id="findNewsPage" resultType="News">
                    select * from news limit #{0},#{1}
            </select>
            <select id="findNewCont" resultType="int">
                    select COUNT(*) from news
            </select>
</mapper>

第二條sql語句是記錄總數量
control層的代碼

private NewsService newsService;

                        @RequestMapping("/findNewsPage.service")
                        public String showNewsInfo(Model model,HttpServletRequest request){
                            //獲取當前頁數
                            String pageNow=request.getParameter("pageNow");
                            //獲取總頁數
                            int totalCount=(int)newsService.findNewCont();
                            Page page=null;
                            List<News> list=new ArrayList<News>();
                            if (pageNow!=null) {
                                page=new Page(Integer.parseInt(pageNow), totalCount);
                                list=this.newsService.findNewsPage(page.getStartPos(),page.getPageSize());
                            }else {
                                page=new Page(1, totalCount);
                                list=this.newsService.findNewsPage(page.getStartPos(),page.getPageSize());
                            }
                            model.addAttribute("list", list);
                            model.addAttribute("page", page);
                            return "news.jsp";
                        }

頁面的代碼

div class="pager">
          <font size="2">共 ${page.totalPageCount} 頁</font> <font size="2">第  
            ${page.pageNow} 頁</font> <a href="findNewsPage.service?pageNow=1">首頁</a>  
        <c:choose>  
            <c:when test="${page.pageNow - 1 > 0}">  
                <a href="findNewsPage.service?pageNow=${page.pageNow - 1}">上一頁</a>  
            </c:when>  
            <c:when test="${page.pageNow - 1 <= 0}">  
                <a href="findNewsPage.service?pageNow=1">上一頁</a>  
            </c:when>  
        </c:choose>  
        <c:choose>  
            <c:when test="${page.totalPageCount==0}">  
                <a href="findNewsPage.service?pageNow=${page.pageNow}">下一頁</a>  
            </c:when>  
            <c:when test="${page.pageNow + 1 < page.totalPageCount}">  
                <a href="findNewsPage.service?pageNow=${page.pageNow + 1}">下一頁</a>  
            </c:when>  
            <c:when test="${page.pageNow + 1 >= page.totalPageCount}">  
                <a href="findNewsPage.service?pageNow=${page.totalPageCount}">下一頁</a>  
            </c:when>  
        </c:choose>  
        <c:choose>  
            <c:when test="${page.totalPageCount==0}">  
                <a href="findNewsPage.service?pageNow=${page.pageNow}">尾頁</a>  
            </c:when>  
            <c:otherwise>  
                <a href="findNewsPage.service?pageNow=${page.totalPageCount}">尾頁</a>  
            </c:otherwise>  
        </c:choose> 
       </div>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章