Spring MVC 关于分页的简单实现
据本人了解,目前较常用的分页实现办法有两种:
1.每次翻页都修改SQL,向SQL传入相关参数去数据库实时查出该页的数据并显示。
2.查出数据库某张表的全部数据,再通过在业务逻辑里面进行处理去取得某些数据并显示。
对于数据量并不大的简单的管理系统而言,第一种实现方法相对来说容易使用较少的代码实现分页这一功能,本文也正是为大家介绍这种方法:
一、MyBatis数据表配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="ec.help.dao.UserDao"> <resultMap type="ec.help.bean.User" id="userResult" >
<id column="id" javaType="string" />
<result column="username" javaType="string" />
<result column="password" javaType="string" />
</resultMap> <sql id="userColumn"> id, username, password</sql> <select id="getUser" parameterType="map" resultType="ec.help.bean.User" >
select * from User where username=#{0} and password=#{1}
</select> <select id="getAllUser" parameterType="map" resultType="ec.help.bean.User" >
select * from User
</select> <!-- 分页使用SQL -->
<select id="getUserByPage" resultType="ec.help.bean.User" >
select * from user limit #{0},#{1}
</select> <insert id="addUser" parameterType="ec.help.bean.User">
insert into User(id,username,password) values(#{id},#{username},#{password})
</insert> <delete id="deleteUser" parameterType="String">
delete from User where id=#{id}
</delete> <select id="showUser" parameterType="String" resultType="ec.help.bean.User" >
select * from User where id=#{id}
</select> <update id="updateUser" parameterType="map">
update User set username=#{0},password=#{1} where id=#{2}
</update>
</mapper>
SQL中传入的第一个参数为开始的行数,第二个参数为数据条数。
二、Controller中逻辑实现:
@Value("#{configProperties['userPageSize']}")
private String userPageSize;
@RequestMapping("/listUser.do")
public ModelAndView listUser(String page,Model model){
//每页显示的条数
int pageSize = Integer.parseInt(userPageSize);
List<User> users = new ArrayList<User>();
users = this.userService.getAllUser();
//查到的总用户数
model.addAttribute("userNum", users.size());
//总页数
int pageTimes;
if(users.size()%pageSize == 0)
{
pageTimes = users.size()/pageSize;
}else
{
pageTimes = users.size()/pageSize + 1;
}
model.addAttribute("pageTimes", pageTimes);
//页面初始的时候page没有值
if(null == page)
{
page = "1";
}
//每页开始的第几条记录
int startRow = (Integer.parseInt(page)-1) * pageSize;
users = this.userService.getUserByPage(startRow, pageSize);
model.addAttribute("currentPage", Integer.parseInt(page));
model.addAttribute("users", users);
return new ModelAndView("user/listUser");
}
三、分页页面文件:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<div class="pagging">
<div class="left">共${userNum}条记录</div>
<div class="right">
<c:if test="${currentPage == 1}">
<span class="disabled"><< 前一页</span>
</c:if>
<c:if test="${currentPage != 1}">
<a href="listUser.do?page=${currentPage-1}"><< 前一页</a>
</c:if>
<c:if test="${currentPage == 1}">
<span class="current">1</span>
</c:if>
<c:if test="${currentPage != 1}">
<a href="listUser.do?page=1">1</a>
</c:if>
<%
int pageTimes = (Integer)session.getAttribute("pageTimes");
for(int i=1;i<pageTimes;i++)
{
request.setAttribute("page", i+1);
%>
<c:if test="${currentPage == page}">
<span class="current"><%=i+1%></span>
</c:if>
<c:if test="${currentPage != page}">
<a href="listUser.do?page=<%=i+1%>"><%=i+1%></a>
</c:if>
<%} %> <c:if test="${currentPage == pageTimes}">
<span class="disabled">后一页 >></span>
</c:if>
<c:if test="${currentPage != pageTimes}">
<a href="listUser.do?page=${currentPage+1}">后一页 >></a>
</c:if>
</div>
</div>
四、实现效果:

Spring MVC 关于分页的简单实现的更多相关文章
- Spring MVC(八)--控制器接受简单列表参数
有些场景下需要向后台传递一个数组,比如批量删除传多个ID的情况,可以使用数组传递,数组中的ID元素为简单类型,即基本类型. 现在我的测试场景是:要从数据库中查询minId<id<maxId ...
- spring mvc底层(DispacherServlet)的简单实现
使用过spring mvc的小伙伴都知道,mvc在使用的时候,我们只需要在controller上注解上@controller跟@requestMapping(“URL”),当我们访问对应的路径的时候, ...
- Spring MVC 学习 之 - 配置简单demo
1.环境参数: Maven:3.1.1 JDK :1.6 2.项目文件结构图: 3.各文件配置: 3.1. pom.xml <project xmlns="http://maven. ...
- Spring MVC 文件上传简单示例(form、ajax方式 )
1.Form Upload SpringMVC 中,文件的上传是通过 MultipartResolver 实现的,所以要实现上传,只要注册相应的 MultipartResolver 即可. Multi ...
- spring mvc+mybatis+sql server简单配置
context.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&qu ...
- spring mvc+ajax分页
分页大致思路:页面每次把当前页传到后台并获得从后台传过来的json数据,解析后布局到这个页面上. 1.服务端代码: @Controller public class MemcachedContrlle ...
- Spring mvc i18n国际化的简单demo
在渲染视图的xml文件中,配置一个i18nBean 实现两个接口: SessionLocaleResolver --> 加载资源主题 ReloadableResourceBundleMessag ...
- Spring MVC基础入门
Spring MVC简介 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱 ...
- Spring MVC简介
Spring MVC简介 Spring MVC框架是有一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC ...
随机推荐
- Office2003/2010等集成SP的简单方法
Office2003集成SP的简单方法 需要准备的工具:Office 2003 光盘镜像.SP3更新包.Office 2003 序列号.UltraISO,7-zip或winrar,虚拟光驱 步骤一:提 ...
- 编译Android各种错误
第一次编译成功,第二次出现Value for 'keystore' is not valid. It must resolve to a single path 打开proj.android\ant. ...
- spark中groupByKey与reducByKey
[译]避免使用GroupByKey Scala Spark 技术 by:leotse 原文:Avoid GroupByKey 译文 让我们来看两个wordcount的例子,一个使用了reduceB ...
- LoadRunner监控Unix、Windows方法及常用性能指标
目 录 一.LoadRunner监控Linux资源.... 3 (一).准备工作... 3 1.可以通过两种方法验证服务器上是否配置了rstatd守护程序:... 3 (2)使用find命令... ...
- Android Studio的使用(十三)--设置方法分割线
1.只需要在设置中选中show method separators 即可.
- 性能更好的js动画实现方式---requestAnimationFrame
用js来实现动画,我们一般是借助setTimeout或setInterval这两个函数,css3动画出来后,我们又可以使用css3来实现动画了,而且性能和流畅度也得到了很大的提升.但是css3动画还是 ...
- Android AudioPolicyService服务启动过程
AudioPolicyService是策略的制定者,比如什么时候打开音频接口设备.某种Stream类型的音频对应什么设备等等.而AudioFlinger则是策略的执行者,例如具体如何与音频设备通信,如 ...
- 简单的js实现网页时钟
js实现时钟. <div id="clock"></div> <script type="text/javascript"> ...
- hide the navigationBar and tabBar
[self.navigationController setNavigationBarHidden:YES animated:NO]; hidesBottomBarWhenPushed
- ReactiveCocoa Weak-Strong Dance
AC在应用中大量使用了block,由于Objective-C语言的内存管理是基于引用计数的,为了避免循环引用问题,在block中如果要引用self,需要使用@weakify(self)和@strong ...