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

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

package com.ssm.util;
import java.util.List;
public class Page {
        private int firstIndex;
        private int pageSize=5;
        private int pageCount=1;
        private int totalPageCount;
        private int totalDataCount;
        private List 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 getList() {
            return list;
        }
        public void setList(List list) {
            this.list = list;
        }       
}

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

<select id="queryall" resultType="Component" resultMap="componentResultMap" parameterType="int">
    
    
        SELECT * FROM component LIMIT #{firstIndex},#{pageSize}
    select>
    <select id="queryCount" resultType="int">
    
        select count(*) from component
    select>
    
    public interface ComponentMapper {
    //方法名要与查询语句id一样
    public List queryall(Page page);
    public int queryCount();
}
//对应service层的操作
@Service
public class ComponentServiceImpl implements ComponentService{
    @Autowired
    private ComponentMapper componentMapper;//注入
    public Page getAllComponent(Page page) {
        List 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 page){
        ModelAndView view=new ModelAndView();
        page = componentService.getAllComponent(page);
        view.addObject("page",page);
        view.setViewName("componentList");
        return view;
    }

第四部页面展示


        <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}GBtd>
                    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}">
            首页  上一页
        c:if>
        <c:if test="${page.pageCount > 1}">
            <a href="${pageContext.request.contextPath}/componentType/getAllComponent?pageCount=1">首页a>
              
            <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}">
            下一页  尾页
        c:if>
            <c:if test="${page.pageCount < page.totalPageCount}">
            <a href="${pageContext.request.contextPath}/componentType/getAllComponent?pageCount=${page.pageCount+1}">下一页a>
              
            <a href="${pageContext.request.contextPath}/componentType/getAllComponent?pageCount=${page.totalPageCount}">尾页a>
        c:if>
    div>

        <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>

最后效果图
Mybatis分页查询及底部页码实现_第1张图片

你可能感兴趣的:(Mybatis分页查询及底部页码实现)