Mybatis分页查询及底部页码实现

来源:互联网 发布:百分百qq采集分析软件 编辑:程序博客网 时间:2024/05/23 18:31

在做web开发中分页操作是少不了的,以下是mybatis+mysql的分页查询实现
第一步:写好分页操作的工具类

package com.ssm.util;import java.util.List;public class Page<T> {        private int firstIndex;        private int pageSize=5;        private int pageCount=1;        private int totalPageCount;        private int totalDataCount;        private List<T> list;        public int getFirstIndex() {            return (this.getPageCount()-1)*this.getPageSize();        }        public int getPageSize() {            return pageSize;        }        public void setPageSize(int pageSize) {            this.pageSize = pageSize;        }        public int getPageCount() {            return pageCount;        }        public void setPageCount(int pageCount) {            this.pageCount = pageCount;        }        public int getTotalPageCount() {            return (this.getTotalDataCount()-1)/this.getPageSize()+1;        }        public int getTotalDataCount() {            return totalDataCount;        }        public void setTotalDataCount(int totalDataCount) {            this.totalDataCount = totalDataCount;        }        public List<T> getList() {            return list;        }        public void setList(List<T> list) {            this.list = list;        }       }

第二部:搭好mybatis框架做好实体映射 (略过)
第三部:分页操作

<select id="queryall" resultType="Component" resultMap="componentResultMap" parameterType="int">    <!-- mysql 的分页查询语句-->    <!--firstIndex pageSize是Page类的属性 -->        SELECT * FROM component LIMIT #{firstIndex},#{pageSize}    </select>    <select id="queryCount" resultType="int">    <!-- 查询总记录数-->        select count(*) from component    </select>    <!--接着就是对应的接口-->    public interface ComponentMapper {    //方法名要与查询语句id一样    public List<Component> queryall(Page<Component> page);    public int queryCount();}//对应service层的操作@Servicepublic class ComponentServiceImpl implements ComponentService{    @Autowired    private ComponentMapper componentMapper;//注入    public Page<Component> getAllComponent(Page<Component> page) {        List<Component> list = componentMapper.queryall(page);        int queryCount = componentMapper.queryCount();        page.setTotalDataCount(queryCount);        page.setList(list);        return page;    }    //对应的Controller层操作    @Controller@RequestMapping("/componentType")public class ComponentcCntroller {    @Autowired    private ComponentService componentService;//注入service    @RequestMapping("getAllComponent")    public ModelAndView getAllComponent(Page<Component> page){        ModelAndView view=new ModelAndView();        page = componentService.getAllComponent(page);        view.addObject("page",page);        view.setViewName("componentList");        return view;    }

第四部页面展示

<!-- 用c标签对page里的list进行迭代-->        <c:forEach items="${page.list}" var="c" varStatus="index">                <tr>                    <td>${page.firstIndex+index.index+1}</td>                    <td>${c.componentName}</td>                    <td>${c.componentType.type_name}</td>                    <c:if test="${c.capacity eq ''}">                        <td>---</td>                    </c:if>                    <c:if test="${c.capacity != '' }">                        <td>${c.capacity}GB</td>                    </c:if>                    <td>${c.price}</td>                    <td><a href="${pageContext.request.contextPath}/toUpdate.action?componentId=${c.componentId}">修改</a>                    <a href="${pageContext.request.contextPath}/deleteComponent.action?componentId=${c.componentId}">删除</a></td>                </tr>    </c:forEach>    <!-- 下面是对页码的处理-->        <div align="center">        第${page.pageCount}/${page.totalPageCount}页        <c:if test="${page.pageCount eq 1}">            首页&nbsp;&nbsp;上一页        </c:if>        <c:if test="${page.pageCount > 1}">            <a href="${pageContext.request.contextPath}/componentType/getAllComponent?pageCount=1">首页</a>            &nbsp;&nbsp;            <a href="${pageContext.request.contextPath}/componentType/getAllComponent?pageCount=${page.pageCount-1}">上一页</a>        </c:if>            <c:if test="${page.totalPageCount<5}">                <c:forEach begin="1" end="${page.totalPageCount}" varStatus="index">                        <a id="${index.index }" href="${pageContext.request.contextPath}/componentType/getAllComponent?pageCount=${index.index}"><font>${index.index}</font></a>                </c:forEach>        </c:if>        <c:if test="${page.totalPageCount>5}">            <c:if test="${page.pageCount<=3}">                <c:forEach begin="1" end="5" varStatus="index">                        <a id="${index.index }" href="${pageContext.request.contextPath}/componentType/getAllComponent?pageCount=${index.index}"><font>${index.index}</font></a>                </c:forEach>            </c:if>        </c:if>        <c:if test="${page.totalPageCount>5}">            <c:if test="${page.pageCount>=4&&page.pageCount<=page.totalPageCount-2}">                <c:forEach begin="${page.pageCount-2}" end="${page.pageCount+2}" varStatus="index">                        <a id="${index.index }" href="${pageContext.request.contextPath}/componentType/getAllComponent?pageCount=${index.index}"><font>${index.index}</font></a>                </c:forEach>            </c:if>        </c:if>        <c:if test="${page.totalPageCount>5}">            <c:if test="${page.pageCount>(page.totalPageCount-2)}">                <c:forEach begin="${page.totalPageCount-4}" end="${page.totalPageCount}" varStatus="index">                        <a id="${index.index }" href="${pageContext.request.contextPath}/componentType/getAllComponent?pageCount=${index.index}"><font>${index.index}</font></a>                </c:forEach>            </c:if>        </c:if>        <c:if test="${page.pageCount eq page.totalPageCount}">            下一页&nbsp;&nbsp;尾页        </c:if>            <c:if test="${page.pageCount < page.totalPageCount}">            <a href="${pageContext.request.contextPath}/componentType/getAllComponent?pageCount=${page.pageCount+1}">下一页</a>            &nbsp;&nbsp;            <a href="${pageContext.request.contextPath}/componentType/getAllComponent?pageCount=${page.totalPageCount}">尾页</a>        </c:if>    </div>
<!-- 为了给当前显示的页码显示红色加上以下jQuery代码-->        <style type="text/css">            .font{                color: red;            }        </style>            <link rel="stylesheet" href="https://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">      <script src="https://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>    <script src="https://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script><script type="text/javascript">    $(function(){        var pageNo=${page.pageCount};        $("#"+pageNo).addClass("font");    });</script>

最后效果图
这里写图片描述

2 0
原创粉丝点击