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         }else
22         {
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> 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章