SpringMVC+MyBatis+MySQL实现分页
最近在使用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实现分页相关推荐
- SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统(功能包含分角色,报修管理、抄表管理、车位管理、房屋管理、业主管理、投诉管理、报修统计分析等)
博客目录 SSM框架(spring+springmvc+mybatis)+Mysql实现的社区物业管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 SSM框架(spring+springmv ...
- SpringMVC+Mybatis+MySQL配置Redis缓存
SpringMVC+Mybatis+MySQL配置Redis缓存 1.准备环境: SpringMVC:spring-framework-4.3.5.RELEASE-dist Mybatis:3.4.2 ...
- SpringMVC + MyBatis + MySQL + Redis(作为二级缓存) 配置
前言 Mybatis 有二级缓存,为什么还要用Redis? mybais一级缓存作用域是session,session commit之后缓存就失效了. mybais二级缓存作用域是sessionfac ...
- Java+SSM(Spring+SpringMVC+Mybatis)+Mysql个性化新闻推荐系统 基于用户、项目、内容、聚类、混合的协同过滤推荐算法WebNewsRSM 源代码下载
Java+SSM(Spring+SpringMVC+Mybatis)+Mysql个性化新闻推荐系统 基于用户.项目.内容.聚类.混合的协同过滤推荐算法WebNewsRSM 源代码下载 一.项目简介 1 ...
- 基于SSM的家校通系统(Spring+SpringMVC+Mybatis+mysql)
这是一基于SSM框架开发的家校通. 源代码: 基于SSM的家校通系统(Spring+SpringMVC+Mybatis+mysql).zip-Java文档类资源-CSDN下载这是一基于SSM(spri ...
- 基于JAVA+SpringMVC+Mybatis+MYSQL的汽车租赁系统
项目功能: 系统概要 汽车租赁系统总共分为两个大的模块,分别是系统模块和业务模块.其中系统模块和业务模块底下又有其子模块. 系统分为四类用户角色:超级管理员.业务管理员.系统管理员.数据统计管理员.角 ...
- java springmvc mybatis mysql
仅供参考 java springMvc mybatis mylsq 项目搭建 1.开发环境: window 64.jdk 1.7.0_51.eclipse.tomcat 7 2.jdk安装与环境变量配 ...
- 基于JAVA+SpringMVC+Mybatis+MYSQL的图书租赁系统
介绍 ItelliJ IDEA开发,Spring,SpringMvc,Mybatis框架,前端Jsp技术,AJax技术,Redis,使用Mysql数据库.客户端的充值,使用的支付宝沙箱测试化境 读者注 ...
- 基于mysql学生成绩管理论文_StuSystem: 学生成绩管理系统毕业/课程设计源代码加论文 Spring+SpringMVC+Mybatis+Mysql...
项目简介 项目来源于:https://gitee.com/z77z/StuSystem 本系统是基于JSP+SSM+Mysql实现的学生成绩管理系统.主要实现的功能有教师管理.学生管理.课程管理.学生 ...
最新文章
- SLAM技术大解析:它是如何帮助机器人实现智能行走的?
- 淘宝开源Android容器化框架Atlas开发者指南
- 常用JQuery插件整理
- 一学就废的三种简单排序【冒泡、插入、选择】
- python的os模块使用_Python学习笔记之os模块使用总结
- 磁盘格式化(mkfs命令)、磁盘挂载(mount)、手动添加swap
- Python常见的17个错误
- IIS7.5下的web.config 404应该如何配置
- ckplayer超酷网页播放器
- 【转载】Unity 项目管理与优化
- 超声波模块的原理介绍之时间函数和digitalRead函数的使用
- 深度学习的归一化和反归一化
- ArcGIS 图像合并至新栅格图层(Mosaic To New Raster和Mosaic)
- onenote文本每一行出现绿色背景和旁边出现作者信息的完美解决方法
- 美好的人生,从良好的人际关系开始。
- 计算机组装前工具的准备,计算机组装 必备工具
- JavaWeb项目1-QQZone
- 【Oracle】 ORA-00257: archiver error. Connect internal only, until freed
- 算法进化历程之剪刀石头布
- jeesite 框架的简单应用
热门文章
- 库克:5G iPhone目前还不是我们考虑的问题
- “土豪机”8848出新品 手机数据备份保险箱1699起
- 2019年新iPhone消息再曝 将会有重大升级!
- git push git pull 推送/拉取分支
- java如何检测输入合法_使用java写的一个简易的计算器,可以检测输入是否合法。.doc...
- Android 音频开发(三) 如何播放一帧音频数据上
- python数组的使用方法_使用Python记录数组的正确方法是什么
- java 正则 惰性匹配_正则表达式 - 贪婪与非贪婪(惰性)
- Golang实践录:一个数据库迁移的代码记录
- 文件服务器+快照恢复,云服务器快照恢复