初学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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值