基于SSM框架和BootStrap的分页功能实现

本文详细介绍了如何在基于SSM(Spring、SpringMVC、MyBatis)框架的项目中,结合BootStrap库实现前端分页功能。从创建PageBean开始,到UserMapper的SQL配置,再到Service和Controller的接口实现,最后在JSP页面展示分页效果,每个步骤都进行了详尽的阐述,并特别提醒在传参时需使用@Param注解以避免MyBatis绑定异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建pagebean

package com.testonline.controller.bean;
import java.util.List;
public class PageBean<T> {   
 private int pageNumber; //总记录  
   private int pageCount; //总页数   
    private Integer pageIndex; //当前页   
     private int pageSize; //每页几条数据  
       private List<T> list; //当前页的数据
       
    public int getPageNumber() {        return pageNumber;    }   
     public void setPageNumber(int pageNumber) {        this.pageNumber = pageNumber;    }   
      public int getPageCount() {        return pageCount;    }   
       public void setPageCount(int pageCount) {        this.pageCount = pageCount;    }   
        public Integer getPageIndex() {        return pageIndex;    }   
         public void setPageIndex(Integer pageIndex) {        this.pageIndex = pageIndex;    }   
          public int getPageSize() {        return pageSize;    }  
            public void setPageSize(int pageSize) {        this.pageSize = pageSize;    }  
              public List<T> getList() {        return list;    }   
               public void setList(List<T> list) {        this.list = list;    }
}

2.在UserMapper.xml中加入sql语句

<!--查一共有多少条数据-->
<select id="countIndex" resultType="int">  
  select count(*) from user where 1=1
  </select>
  <!--查用户记录-->
  <select id="showlist" parameterType="int" resultMap="BaseResultMap">  
    select * from user limit #{index},#{pageSize}
    </select>

3.在UserMapper.java中加入

//分页显示所有用户信息
List<User> showlist(@Param("index")int index,@Param("pageSize")int pageSize);
//计算数据总数
int countIndex();

注意:若要传两个参数或以上,则要在参数前面要加上@Param(“xxx”)以区分,不然会报错:nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘XXX’ not found
4.在UserService加入

public List<User> showlist(int index,int pageSize);
public int countIndex();

5.在UserServiceImpl加入

//查询用户列表
@Override
public List<User> showlist(int index,int pageSize) {  
  return usermapper.showlist(index,pageSize);
  }
  //查询用户数据的总条数
  @Override
  public int countIndex() {   
   return usermapper.countIndex();
   }

6.在AdminController加入

//分页查询
@RequestMapping("/admin_user")
public String page(HttpServletRequest request,Model model){   
 //当前页  
   Integer pageIndex = 1;   
  //每页记录条数  
    int pageSize = 3;  
    //总记录数  
      int countIndex = userService.countIndex();  
      //总页数(向上取整)  
        int pageCount = (int)Math.ceil((double)countIndex/pageSize);
    if(request.getParameter("pageIndex")!=null){       
     pageIndex = Integer.parseInt(request.getParameter("pageIndex"));   
      }
    //index代表偏移量  
      int index = (pageIndex-1)*pageSize;
    //当前页的数据   
     List<User> list = userService.showlist(index,pageSize);  
       PageBean<User> pageUtil = new PageBean<User>();  
         pageUtil.setPageIndex(pageIndex);  
           pageUtil.setPageCount(pageCount);  
             pageUtil.setPageNumber(countIndex);   
              pageUtil.setPageSize(pageSize);   
               pageUtil.setList(list);
   	 model.addAttribute("pageUtil",pageUtil);  
   	   return "/admin_user";
  }

7.在JSP中加入

<!--分页-->
<nav aria-label="Page navigation">   
 <ul class="pagination">      
   <!--第一页-->      
     <li>          
       <c:choose>       
            <c:when test="${pageUtil.pageIndex - 1 > 0}">        
                <a href="admin_user?pageIndex=1" aria-label="Previous">        
                        <span aria-hidden="true">&laquo;</span>       
                  </a>         
               </c:when>          
       <c:otherwise>           
            <li class="disabled">           
                 <a href="#" aria-label="Previous">          
                           <span aria-hidden="true">&laquo;</span>       
                   </a>           
              </li>         
          </c:otherwise>       
      </c:choose>     
   </li>      
   <!--页数-->
    <c:forEach var = "i" begin="1" end="${pageUtil.pageCount}" step="1">       
          <c:choose>    
                 <c:when test="${pageUtil.pageIndex==i}">          
                         <li class="active">
                          <a href="admin_user?pageIndex=${i}">${i}</a>
                         </li>        
                   </c:when>      
          <c:otherwise>         
         <li><a href="admin_user?pageIndex=${i}">${i}</a></li>      
         </c:otherwise>        
     </c:choose>      
 </c:forEach>     
<!--尾页-->     
  <li>         
     <c:choose>       
          <c:when test="${pageUtil.pageIndex  < pageUtil.pageCount}">        
              <a href="admin_user?pageIndex=${pageUtil.pageCount}" aria-label="Next">       
                       <span aria-hidden="true">&raquo;</span>       
              </a>          
         </c:when>       
    <c:otherwise>         
      <li class="disabled">         
        <a href="#" aria-label="Next">             
           <span aria-hidden="true">&raquo;</span>       
         </a>         
       </li>       
    </c:otherwise>          
 </c:choose>      
  </li>   
  </ul>
 </nav>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值