>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring:Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19072 个阅读者 刷新本主题
 * 贴子主题:  Spring MVC关于分页的简单实现 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-06-27 18:31:00     消息  查看  搜索  好友  邮件  复制  引用

    据本人了解,目前较常用的分页实现办法有两种:

  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>

此主题相关图片如下:
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->Java注解
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->映射组成关系
  Java网络编程-->用Spring整合CXF发布Web服务
  精通Spring-->组合(Composition)API
  Vue3开发-->创建综合购物网站应用
  微服务架构模型
  WebFlux 响应式编程初体验
  Spring MVC SSE服务器端推送
  @InitBinder注解的用法
  Spring Boot JPA @OneToOne
  超详细使用Maven 搭建 Spring MVC 本地部署Tomcat 实现 Hell...
  Redis的漏洞利用,原来大佬都是这样操作的
  解析配置文件 redis.conf、Redis持久化RDB、Redis的主从复制
  Spring Cloud构建微服务架构的分布式配置中心
  Spring Security中使用的责任链模式
  3分钟让你明白JSON是什么
  使用idea和gradle编译spring5源码
  利用Spring Boot如何开发REST服务详解
  微架构 springcloud-07. springboot-静态资源处理
  spring整合WebService入门详解
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。