最近在使用SSM框架实现一个商品信息展示的功能,商品的数据较多,不免用到分页,查了一番MyBatis分页的做法,终于是实现了,在这里记录下来。

首先写一个分页的工具类,定义当前页数,总页数,每页显示多少等属性。

/** * 分页 工具类*/
public class Page implements Serializable {  private static final long serialVersionUID = -2213069645383858323L;private int pageNow = 1; // 当前页数  private int pageSize = 4; // 每页显示记录的条数  private int totalCount; // 总的记录条数  private int totalPageCount; // 总的页数  private int startPos; // 开始位置,从0开始  private boolean hasFirst;// 是否有首页  private boolean hasPre;// 是否有前一页  private boolean hasNext;// 是否有下一页  private boolean hasLast;// 是否有最后一页  /** * 通过构造函数 传入  总记录数  和  当前页 * @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;  }  /** * 是否是第一页 * @return */  public boolean isHasFirst() {  return (pageNow == 1) ? false : true;  }  public void setHasFirst(boolean hasFirst) {  this.hasFirst = hasFirst;  }  /** * 是否有首页 * @return */  public boolean isHasPre() {  // 如果有首页就有前一页,因为有首页就不是第一页  return isHasFirst() ? true : false;  }  public void setHasPre(boolean hasPre) {  this.hasPre = hasPre;  }  /** * 是否有下一页 * @return */  public boolean isHasNext() {  // 如果有尾页就有下一页,因为有尾页表明不是最后一页  return isHasLast() ? true : false;  }  public void setHasNext(boolean hasNext) {  this.hasNext = hasNext;  }  /** * 是否有尾页 * @return */  public boolean isHasLast() {  // 如果不是最后一页就有尾页  return (pageNow == getTotalCount()) ? false : true;  }  public void setHasLast(boolean hasLast) {  this.hasLast = hasLast;  }
}

接着Mapper接口中定义分类的方法

传入两个参数,分别是开始页和每页显示记录的条数。

Mapper的映射文件中的SQL分页语句

<select id="findPages" resultType="com.dh15.pojo.Goods">select g.id,g.name,g.price,g.num,c.class_name,g.pic,g.des from  tb_goods g,tb_class c where g.class_id=c.cid limit #{startPos},#{pageSize}
</select>

接着在控制类(Controller)中查询商品,同时进行分页。

查询商品方法

/*** 查询商品信息,实现分页* @param goods* @return* @throws Exception*/@RequestMapping("/queryPages")public String queryPages(HttpServletRequest request, Model model) throws Exception {  String pageNow = request.getParameter("pageNow");  Page page = null;  List<Goods> goods = new ArrayList<Goods>();  int totalCount = (int) service.getGoodsCount(1);  if (pageNow != null) {  page = new Page(totalCount, Integer.parseInt(pageNow));  goods = this.service.findPages(page.getStartPos(), page.getPageSize());} else {  page = new Page(totalCount, 1);  goods = this.service.findPages(page.getStartPos(), page.getPageSize());  }  model.addAttribute("goods_list", goods);  model.addAttribute("page", page);  return "goods/FenYeTest";}

这里需要注意一下,遍历商品时没有点击页数,所以当前页默认是空的,这里要在方法里面进行判断,如果pageNow为空,传一个1到构造函数,否则会报空指针。

最后,在jsp页面显示查询的商品列表,同时实现点击上一页,下一页,首页,尾页等常见分页中的操作

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>商品查询列表</title>
</head>
<body><table width="100%" border=1><tr><td>选择</td><td>商品名称</td><td>商品价格</td><td>生产数量</td><td>商品类别</td><td>商品图片</td><td>商品信息</td><td>操作</td></tr><c:forEach items="${goods_list }" var="item"><tr><td>${item.id}<input type="hidden" name="id" value="${item.id}" /></td><td>${item.name }</td><td>${item.price }</td><td>${item.num }</td><td>${item.classInfo.class_name }</td><td><img style="width:110px;height:120px" alt="商品图片"src="http://localhost/pic/${item.pic }"></td><td>${item.des }</td><td><a href="${pageContext.request.contextPath }/findGoodsById.action?id=${item.id}">修改</a><a href="${pageContext.request.contextPath }/delGoods.action?id=${item.id}">删除</a></td></tr></c:forEach></table><div align="center">  <font size="2">第  ${page.pageNow} 页</font> <a href="queryPages.action?pageNow=1">首页</a>  <c:choose>  <c:when test="${page.pageNow - 1 > 0}">  <a href="queryPages.action?pageNow=${page.pageNow - 1}">上一页</a>  </c:when>  <c:when test="${page.pageNow - 1 <= 0}">  <a href="queryPages.action?pageNow=1">上一页</a>  </c:when>  </c:choose>  <c:choose>  <c:when test="${page.totalPageCount==0}">  <a href="queryPages.action?pageNow=${page.pageNow}">下一页</a>  </c:when>  <c:when test="${page.pageNow + 1 < page.totalPageCount}">  <a href="queryPages.action?pageNow=${page.pageNow + 1}">下一页</a>  </c:when>  <c:when test="${page.pageNow + 1 >= page.totalPageCount}">  <a href="queryPages.action?pageNow=${page.totalPageCount}">下一页</a>  </c:when>  </c:choose>  <c:choose>  <c:when test="${page.totalPageCount==0}">  <a href="queryPages.action?pageNow=${page.pageNow}">尾页</a>  </c:when>  <c:otherwise>  <a href="queryPages.action?pageNow=${page.totalPageCount}">尾页</a>  </c:otherwise>  </c:choose>  </div>
</body>
</html>

最终效果图:

SpringMVC+MyBatis+MySQL实现分页相关推荐

  1. SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统(功能包含分角色,报修管理、抄表管理、车位管理、房屋管理、业主管理、投诉管理、报修统计分析等)

    博客目录 SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 SSM框架(spring+springmv ...

  2. SpringMVC+Mybatis+MySQL配置Redis缓存

    SpringMVC+Mybatis+MySQL配置Redis缓存 1.准备环境: SpringMVC:spring-framework-4.3.5.RELEASE-dist Mybatis:3.4.2 ...

  3. SpringMVC + MyBatis + MySQL + Redis(作为二级缓存) 配置

    前言 Mybatis 有二级缓存,为什么还要用Redis? mybais一级缓存作用域是session,session commit之后缓存就失效了. mybais二级缓存作用域是sessionfac ...

  4. Java+SSM(Spring+SpringMVC+Mybatis)+Mysql个性化新闻推荐系统 基于用户、项目、内容、聚类、混合的协同过滤推荐算法WebNewsRSM 源代码下载

    Java+SSM(Spring+SpringMVC+Mybatis)+Mysql个性化新闻推荐系统 基于用户.项目.内容.聚类.混合的协同过滤推荐算法WebNewsRSM 源代码下载 一.项目简介 1 ...

  5. 基于SSM的家校通系统(Spring+SpringMVC+Mybatis+mysql)

    这是一基于SSM框架开发的家校通. 源代码: 基于SSM的家校通系统(Spring+SpringMVC+Mybatis+mysql).zip-Java文档类资源-CSDN下载这是一基于SSM(spri ...

  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的汽车租赁系统

    项目功能: 系统概要 汽车租赁系统总共分为两个大的模块,分别是系统模块和业务模块.其中系统模块和业务模块底下又有其子模块. 系统分为四类用户角色:超级管理员.业务管理员.系统管理员.数据统计管理员.角 ...

  7. java springmvc mybatis mysql

    仅供参考 java springMvc mybatis mylsq 项目搭建 1.开发环境: window 64.jdk 1.7.0_51.eclipse.tomcat 7 2.jdk安装与环境变量配 ...

  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的图书租赁系统

    介绍 ItelliJ IDEA开发,Spring,SpringMvc,Mybatis框架,前端Jsp技术,AJax技术,Redis,使用Mysql数据库.客户端的充值,使用的支付宝沙箱测试化境 读者注 ...

  9. 基于mysql学生成绩管理论文_StuSystem: 学生成绩管理系统毕业/课程设计源代码加论文 Spring+SpringMVC+Mybatis+Mysql...

    项目简介 项目来源于:https://gitee.com/z77z/StuSystem 本系统是基于JSP+SSM+Mysql实现的学生成绩管理系统.主要实现的功能有教师管理.学生管理.课程管理.学生 ...

最新文章

  1. SLAM技术大解析:它是如何帮助机器人实现智能行走的?
  2. 淘宝开源Android容器化框架Atlas开发者指南
  3. 常用JQuery插件整理
  4. 一学就废的三种简单排序【冒泡、插入、选择】
  5. python的os模块使用_Python学习笔记之os模块使用总结
  6. 磁盘格式化(mkfs命令)、磁盘挂载(mount)、手动添加swap
  7. Python常见的17个错误
  8. IIS7.5下的web.config 404应该如何配置
  9. ckplayer超酷网页播放器
  10. 【转载】Unity 项目管理与优化
  11. 超声波模块的原理介绍之时间函数和digitalRead函数的使用
  12. 深度学习的归一化和反归一化
  13. ArcGIS 图像合并至新栅格图层(Mosaic To New Raster和Mosaic)
  14. onenote文本每一行出现绿色背景和旁边出现作者信息的完美解决方法
  15. 美好的人生,从良好的人际关系开始。
  16. 计算机组装前工具的准备,计算机组装 必备工具
  17. JavaWeb项目1-QQZone
  18. 【Oracle】 ORA-00257: archiver error. Connect internal only, until freed
  19. 算法进化历程之剪刀石头布
  20. jeesite 框架的简单应用

热门文章

  1. 库克:5G iPhone目前还不是我们考虑的问题
  2. “土豪机”8848出新品 手机数据备份保险箱1699起
  3. 2019年新iPhone消息再曝 将会有重大升级!
  4. git push git pull 推送/拉取分支
  5. java如何检测输入合法_使用java写的一个简易的计算器,可以检测输入是否合法。.doc...
  6. Android 音频开发(三) 如何播放一帧音频数据上
  7. python数组的使用方法_使用Python记录数组的正确方法是什么
  8. java 正则 惰性匹配_正则表达式 - 贪婪与非贪婪(惰性)
  9. Golang实践录:一个数据库迁移的代码记录
  10. 文件服务器+快照恢复,云服务器快照恢复