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

  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 关于分页的简单实现的更多相关文章

  1. Spring MVC(八)--控制器接受简单列表参数

    有些场景下需要向后台传递一个数组,比如批量删除传多个ID的情况,可以使用数组传递,数组中的ID元素为简单类型,即基本类型. 现在我的测试场景是:要从数据库中查询minId<id<maxId ...

  2. spring mvc底层(DispacherServlet)的简单实现

    使用过spring mvc的小伙伴都知道,mvc在使用的时候,我们只需要在controller上注解上@controller跟@requestMapping(“URL”),当我们访问对应的路径的时候, ...

  3. Spring MVC 学习 之 - 配置简单demo

    1.环境参数: Maven:3.1.1 JDK  :1.6 2.项目文件结构图: 3.各文件配置: 3.1. pom.xml <project xmlns="http://maven. ...

  4. Spring MVC 文件上传简单示例(form、ajax方式 )

    1.Form Upload SpringMVC 中,文件的上传是通过 MultipartResolver 实现的,所以要实现上传,只要注册相应的 MultipartResolver 即可. Multi ...

  5. spring mvc+mybatis+sql server简单配置

    context.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&qu ...

  6. spring mvc+ajax分页

    分页大致思路:页面每次把当前页传到后台并获得从后台传过来的json数据,解析后布局到这个页面上. 1.服务端代码: @Controller public class MemcachedContrlle ...

  7. Spring mvc i18n国际化的简单demo

    在渲染视图的xml文件中,配置一个i18nBean 实现两个接口: SessionLocaleResolver --> 加载资源主题 ReloadableResourceBundleMessag ...

  8. Spring MVC基础入门

    Spring MVC简介 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱 ...

  9. Spring MVC简介

    Spring MVC简介 Spring MVC框架是有一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC ...

随机推荐

  1. HDU 1072/BFS

    题目链接 Nightmare Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...

  2. POJ 3468<线段树,区间add>

    题目连接 //位运算 k<<1 相当于 k*2 k<<1|1 相当于 k*2+1 /* 修改区间内的值,并且维护区间和. 详见代码 */ #include<cstdio& ...

  3. 后台如何解析json

    1.以前倒是没有怎没遇到过需要后台解析的,由于json传到后台实际上是传的一个字符串通常用到批量删除时 var rows = $('#tt').datagrid('getSelections'); v ...

  4. Dom++完美版得到元素到html的距离6/4/21

    function getTop(obj) { var pos={left:0,top:0}; while(obj) { pos.left+=obj.offsetLeft; pos.top+=obj.o ...

  5. JS取非行间样式

    <title>无标题文档</title> <style> #div1{width:200px;height:200px; background:red;} < ...

  6. Git学习 -- 标签管理

    新建标签 git tag <tagname>   默认为HEAD,也可以指定一个commit id eg.   git tag v0.9  git tag v1.0 31aa59c git ...

  7. 转:Selenium Grid深入学习

    应网友要求写一个用Selenium Grid控制多系统多浏览器并行执行test case的例子. 因为我这里有两台机子,我打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub ...

  8. 安装PHP memcached扩展

    引用 pecl.php.net有两个memcache扩展: memcache   memcached extension memcached PHP extension for interfacing ...

  9. psy & obv

    PSY和OBV 1,PSY心理线是投资者对股市涨跌产生心理波动的情绪指标.相反,当PSY曲线向下跌破PSYMA曲线后,为卖出时机..当PSY曲线向上突破PSYMA曲线后,开始向下回调至PSYMA曲线, ...

  10. 实现RGB,CMY(K),YUV,YIQ,YCbCr颜色的转换算法

    源:http://blog.sina.com.cn/s/blog_4d80055a01000atu.html import java.lang.Math; import java.awt.*; pub ...