SSM框架实现分页

1,、首先创建一个分页的工具类

package cn.page.po;

import java.io.Serializable;

public class Page implements Serializable {
private static final long serialVersionUID = -3198048449643774660L; private int pageNow = 1; // 当前页数 private int pageSize = 4; // 每页显示记录的条数 private int totalCount; // 总的记录条数 private int totalPageCount; // 总的页数 @SuppressWarnings("unused")
private int startPos; // 开始位置,从0开始 /**
* 通过构造函数 传入 总记录数 和 当前页
* @param totalCount
* @param pageNow
*/
public Page(int totalCount, int pageNow) {
this.totalCount = totalCount;
this.pageNow = pageNow;
} /**
* 取得总页数,总页数=总记录数/每页显示记录的条数
* @return
*/
public int getTotalPageCount() {
totalPageCount = getTotalCount() / getPageSize();
return (totalCount % pageSize == 0) ? totalPageCount //总页数
: totalPageCount + 1;
} public void setTotalPageCount(int totalPageCount) {
this.totalPageCount = totalPageCount;
} public int getPageNow() {
return pageNow;
} public void setPageNow(int pageNow) {
this.pageNow = pageNow;
} public int getPageSize() {
return pageSize;
} public void setPageSize(int pageSize) {
this.pageSize = pageSize;
} public int getTotalCount() {
return totalCount;
} public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
/**
* 取得选择记录的初始位置
* @return
*/
public int getStartPos() {
return (pageNow - 1) * pageSize;
} public void setStartPos(int startPos) {
this.startPos = startPos;
} }

2、写mapper.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.page.mapper.UserMapper">
<resultMap type="cn.page.po.User" id="userMap">
<id property="id" column="id" />
<result property="emplnumb" column="emplnumb" />
<result property="username" column="username" />
<result property="password" column="password" />
<result property="address" column="address" />
</resultMap>
<!-- 分页SQL语句 -->
<select id="selectUserByPage" resultMap="userMap">
select *
from user limit #{startPos},#{pageSize}
</select>
<!-- 取得记录的总数 -->
<select id="getUserCount" resultType="long">
SELECT COUNT(*) FROM user
</select>
</mapper>

3、mapper接口

    /**
* 使用注解方式传入多个参数
* @param page
* @return startPos},#{pageSize}
*/
public List<User> selectUserByPage(@Param(value="startPos") Integer startPos,
@Param(value="pageSize") Integer pageSize); /**
* 用户总数
*/
public long getUserCount();

4、service接口与实现类

 void showUserByPage(HttpServletRequest request,Model model);

  

@Autowired
private UserMapper userMapper;
@Override
public void showUserByPage(HttpServletRequest request, Model model) {
// TODO Auto-generated method stub
String pageNow = request.getParameter("pageNow"); Page page = null; List<User> user = new ArrayList<User>();
//查询用户总数
int totalCount = (int) userMapper.getUserCount(); if (pageNow != null) {
page = new Page(totalCount, Integer.parseInt(pageNow));
user = this.userMapper.selectUserByPage(page.getStartPos(), page.getPageSize());
} else {
page = new Page(totalCount, 1);
user = this.userMapper.selectUserByPage(page.getStartPos(), page.getPageSize());
} model.addAttribute("user", user);
model.addAttribute("page", page);
}

4、controller方法

@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/pagingUser.action")
public String pagingUser(HttpServletRequest request,Model model){
userService.showUserByPage(request, model);
return "pagingUser"; }
}

5、页面显示

<c:forEach items="${user }" var="user">
<tr>
<td>${user.emplnumb }</td>
<td>${user.username }</td>
<td>${user.address }</td>
<td>${user.telephone }</td>
</tr>
</c:forEach>
</table> <div align="center">
<font size="2">共 ${page.totalPageCount} 页</font> <font size="2">第
${page.pageNow} 页</font> <a href="${pageContext.request.contextPath}/pagingUser.action?pageNow=1">首页</a>
<c:choose>
<c:when test="${page.pageNow - 1 > 0}">
<a href="${pageContext.request.contextPath}/pagingUser.action?pageNow=${page.pageNow - 1}">上一页</a>
</c:when>
<c:when test="${page.pageNow - 1 <= 0}">
<a href="${pageContext.request.contextPath}/pagingUser.action?pageNow=1">上一页</a>
</c:when>
</c:choose>
<c:choose>
<c:when test="${page.totalPageCount==0}">
<a href="${pageContext.request.contextPath}/pagingUser.action?pageNow=${page.pageNow}">下一页</a>
</c:when>
<c:when test="${page.pageNow + 1 < page.totalPageCount}">
<a href="${pageContext.request.contextPath}/pagingUser.action?pageNow=${page.pageNow + 1}">下一页</a>
</c:when>
<c:when test="${page.pageNow + 1 >= page.totalPageCount}">
<a href="${pageContext.request.contextPath}/pagingUser.action?pageNow=${page.totalPageCount}">下一页</a>
</c:when>
</c:choose>
<c:choose>
<c:when test="${page.totalPageCount==0}">
<a href="${pageContext.request.contextPath}/pagingUser.action?pageNow=${page.pageNow}">尾页</a>
</c:when>
<c:otherwise>
<a href="${pageContext.request.contextPath}/pagingUser.action?pageNow=${page.totalPageCount}">尾页</a>
</c:otherwise>
</c:choose>
</div>

  

参考博客:http://blog.csdn.net/zhshulin/article/details/26447713

SSM框架实现分页的更多相关文章

  1. SSM框架——实现分页和搜索分页

    登录|注册     在路上 在路上,要懂得积累:在路上,要学会放下:我在路上!Stay hungry,Stay foolish.       目录视图 摘要视图 订阅 [公告]博客系统优化升级     ...

  2. java ssm框架实现分页功能 (oracle)

    java web 实现分页功能 使用框架:ssm 数据库:oracle 话说 oracle 的分页查询比 mysql 复杂多了,在这里简单谈一下: 查询 前十条数据: SELECT * FROM( S ...

  3. SSM框架下分页的实现(封装page.java和List<?>)

    之前写过一篇博客  java分页的实现(后台工具类和前台jsp页面),介绍了分页的原理. 今天整合了Spring和SpringMVC和MyBatis,做了增删改查和分页,之前的逻辑都写在了Servle ...

  4. SSM框架使用分页插件显示信息

    1.在该SSM工程的pom.xml中加入PageHelper的分页插件依赖(若是版本号不对,可以尝试修改一下) <!-- 分页插件 --> <dependency> <g ...

  5. ssm框架layui分页下标中文乱码,或者请选择中文乱码,提示乱码等

    开始我以为是layui的bug 后来发现不是 用过的方法: 1.修改layui的js文件  将其中的中文变为encdoe 代码 比如laypage.js下的中文 2.添加web.xml的过滤器 该代码 ...

  6. SSM框架手动实现分页逻辑(非PageHelper)

    第一种方法:查询出所有数据再分页 分析: 分页时,需要获得前台传来的两个参数,分别为pageNo(第几页数据),pageSize(每页的条数); 根据这两个参数来计算出前端需要的数据是查出数据list ...

  7. SSM框架学习之高并发秒杀业务--笔记2-- DAO层

    上节中利用Maven创建了项目,并导入了所有的依赖,这节来进行DAO层的设计与开发 第一步,创建数据库和表. 首先分析业务,这个SSM匡济整合案例是做一个商品的秒杀系统,要存储的有:1.待秒杀的商品的 ...

  8. 搭建ssm框架,可实现登录和数据展示以及增删改查

    需求: 后台使用ssm(spring-springMVC-mybatis)进行整合 前台使用bootstrap框架 前后台交互使用Ajax进行发送 表结构: 登录页面后显示所有用户信息,可对每条进行增 ...

  9. 基于SSM框架贺州学院校园二手交易平台设计与实现

    前言 这个是我当时的毕业论文,分享出来,给同学们参考. 绪论 随着中国新四大发明的诞生,网购成了千千万万网友们购物的新方式,新的购物方式促进商业的发展,但随着人们生活水平的提高,许多新购置的物品用了没 ...

随机推荐

  1. springMVC学习总结(三)数据绑定

    springMVC学习总结(三)数据绑定 一.springMVC的数据绑定,常用绑定类型有: 1.servlet三大域对象: HttpServletRequest HttpServletRespons ...

  2. 使用docker+consul+nginx集成分布式的服务发现与注册架构

    一.环境说明: 1.一台虚拟机,该系统已经装好了docker: ip 192.168.10.224 虚拟网卡,与主机互通 操作系统rhel6 内核 2.6.32  64位 docker版本 1.7.1 ...

  3. C#:MVC引用Log4Net生成错误日志

    第一步:引用log4net配置文件 第二步:在自己项目下新建文件夹LogNet,再在里面建立类Log.cs log.cs内容如下: 第三步:在自己项目下新建Log4Net.config Log4Net ...

  4. Spark2.2.0分布式集群安装(StandAlone模式)

    一.依赖文件安装 1.1 JDK 参见博文:http://www.cnblogs.com/liugh/p/6623530.html 1.2 Scala 参见博文:http://www.cnblogs. ...

  5. JeeSite如何正确连接SQL SERVER 数据库

    JeeSite如何正确连接SQL SERVER 数据库 jeesite介绍 感谢jeesite项目的作者thinkgem. 没有你我也不会更改这数据源非了恁大的劲,,,,嘻嘻嘻说多了. JeeSite ...

  6. 如何使用 stack?- 每天5分钟玩转 Docker 容器技术(112)

    定义好了 stack YAML 文件,就可以通过 docker stack deploy 命令部署应用. Docker 会按照 YAML 的内容来创建各种资源.为了不重名,所有资源都会加上 stack ...

  7. SQL Server 修改AlwaysOn共享网络位置

    标签:MSSQL/故障转移 概述 很多人一开始搭建Alwayson的时候对于共享网络位置的选择不是很重视, 导致后面需要去修改这个路径.但是怎样修改这个路径呢?貌似没有给出具体的修改选项,但是还是有地 ...

  8. htpasswd 命令详解

    htpasswd参数 -c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容. -n 不更新passwordfile,直接显示密码 -m 使用MD5加密(默 ...

  9. android 串口开发第一篇:搭建ndk开发环境以及第一个jni调用程序

    一:ndk环境搭建 1:开发环境 我使用的是android studio 2.3.3版本,搭建ndk开发环境比较简单,打开File----Settings----Appearance&Beha ...

  10. Java之线程安全中的三种同步方式

    一个程序在运行起来时,会转换为进程,通常含有多个线程. 通常情况下,一个进程中的比较耗时的操作(如长循环.文件上传下载.网络资源获取等),往往会采用多线程来解决. 比如,现实生活中,银行取钱问题.火车 ...