首页 > 代码库 > Spring MVC 关于分页的简单实现
Spring MVC 关于分页的简单实现
据本人了解,目前较常用的分页实现办法有两种:
1.每次翻页都修改SQL,向SQL传入相关参数去数据库实时查出该页的数据并显示。
2.查出数据库某张表的全部数据,再通过在业务逻辑里面进行处理去取得某些数据并显示。
对于数据量并不大的简单的管理系统而言,第一种实现方法相对来说容易使用较少的代码实现分页这一功能,本文也正是为大家介绍这种方法:
一、MyBatis数据表配置文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper 3 PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" 4 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> 5 <mapper namespace="ec.help.dao.UserDao"> 6 7 <resultMap type="ec.help.bean.User" id="userResult" > 8 <id column="id" javaType="string" /> 9 <result column="username" javaType="string" />10 <result column="password" javaType="string" /> 11 </resultMap>12 13 <sql id="userColumn"> id, username, password</sql>14 15 <select id="getUser" parameterType="map" resultType="ec.help.bean.User" >16 select * from User where username=#{0} and password=#{1}17 </select>18 19 <select id="getAllUser" parameterType="map" resultType="ec.help.bean.User" >20 select * from User 21 </select>22 23 <!-- 分页使用SQL -->24 <select id="getUserByPage" resultType="ec.help.bean.User" >25 select * from user limit #{0},#{1} 26 </select>27 28 <insert id="addUser" parameterType="ec.help.bean.User">29 insert into User(id,username,password) values(#{id},#{username},#{password})30 </insert>31 32 33 <delete id="deleteUser" parameterType="String">34 delete from User where id=#{id}35 </delete>36 37 <select id="showUser" parameterType="String" resultType="ec.help.bean.User" >38 select * from User where id=#{id}39 </select>40 41 <update id="updateUser" parameterType="map">42 update User set username=#{0},password=#{1} where id=#{2}43 </update>44 </mapper>
SQL中传入的第一个参数为开始的行数,第二个参数为数据条数。
二、Controller中逻辑实现:
1 @Value("#{configProperties[‘userPageSize‘]}") 2 private String userPageSize; 3 4 @RequestMapping("/listUser.do") 5 public ModelAndView listUser(String page,Model model){ 6 7 //每页显示的条数 8 int pageSize = Integer.parseInt(userPageSize); 9 10 List<User> users = new ArrayList<User>(); 11 users = this.userService.getAllUser();12 13 //查到的总用户数14 model.addAttribute("userNum", users.size());15 16 //总页数17 int pageTimes;18 if(users.size()%pageSize == 0)19 {20 pageTimes = users.size()/pageSize;21 }else22 {23 pageTimes = users.size()/pageSize + 1;24 }25 model.addAttribute("pageTimes", pageTimes);26 27 //页面初始的时候page没有值28 if(null == page)29 {30 page = "1";31 }32 33 //每页开始的第几条记录 34 int startRow = (Integer.parseInt(page)-1) * pageSize;35 users = this.userService.getUserByPage(startRow, pageSize);36 37 model.addAttribute("currentPage", Integer.parseInt(page));38 model.addAttribute("users", users);39 40 return new ModelAndView("user/listUser"); 41 }
三、分页页面文件:
1 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 3 <div class="pagging"> 4 <div class="left">共${userNum}条记录</div> 5 <div class="right"> 6 <c:if test="${currentPage == 1}"> 7 <span class="disabled"><< 前一页</span> 8 </c:if> 9 <c:if test="${currentPage != 1}">10 <a href="listUser.do?page=${currentPage-1}"><< 前一页</a>11 </c:if>12 <c:if test="${currentPage == 1}">13 <span class="current">1</span>14 </c:if>15 <c:if test="${currentPage != 1}">16 <a href="listUser.do?page=1">1</a>17 </c:if>18 <%19 int pageTimes = (Integer)session.getAttribute("pageTimes");20 for(int i=1;i<pageTimes;i++)21 {22 request.setAttribute("page", i+1);23 %> 24 <c:if test="${currentPage == page}">25 <span class="current"><%=i+1%></span> 26 </c:if>27 <c:if test="${currentPage != page}">28 <a href="listUser.do?page=<%=i+1%>"><%=i+1%></a>29 </c:if>30 <%} %>31 32 <c:if test="${currentPage == pageTimes}">33 <span class="disabled">后一页 >></span> 34 </c:if>35 <c:if test="${currentPage != pageTimes}">36 <a href="listUser.do?page=${currentPage+1}">后一页 >></a>37 </c:if>38 </div>39 </div>
四、实现效果:
Spring MVC 关于分页的简单实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。