首先,如果各位在这块配置和代码有什么问题欢迎说出来,我也会尽自己最大的能力帮大家解答

这些代码我都是写在一个小项目里的,项目的github地址为:https://github.com/Albert-Best-Dong/parking,还希望哪个大佬给我这个小课题指点指点

jdk1.8,spring 4.3.18,mybatis 3.4.6,其实直接直接看pom文件就好了。

很长一段时间里,我学习编程很少总结代码。后来代码总结也只是写在一个电脑里的文件夹,觉得与互联网脱轨了,哈哈哈,所以现在也准备写一写博客,记录自己,提高水平。

这是我的第一篇,也是关于SSM框架下使用PageHelper。

这里不具体写我做的项目课题的全部内容,主要专注于PageHelper部分

工程结构如下图:

首先在pom.xml(parking_dao模块下)引入PageHelper依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>parking</artifactId>
  7. <groupId>com.dong</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11.  
  12. <artifactId>parking_dao</artifactId>
  13. <dependencies>
  14. <dependency>
  15. <groupId>mysql</groupId>
  16. <artifactId>mysql-connector-java</artifactId>
  17. <version>5.1.47</version>
  18. </dependency>
  19. <dependency>
  20. <groupId>org.mybatis</groupId>
  21. <artifactId>mybatis</artifactId>
  22. <version>3.4.6</version>
  23. </dependency>
  24.  
  25. <dependency>
  26. <groupId>org.springframework</groupId>
  27. <artifactId>spring-core</artifactId>
  28. <version>${spring.version}</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.springframework</groupId>
  32. <artifactId>spring-context</artifactId>
  33. <version>${spring.version}</version>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework</groupId>
  37. <artifactId>spring-beans</artifactId>
  38. <version>${spring.version}</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.mybatis</groupId>
  42. <artifactId>mybatis-spring</artifactId>
  43. <version>1.3.1</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>org.springframework</groupId>
  47. <artifactId>spring-jdbc</artifactId>
  48. <version>${spring.version}</version>
  49. </dependency>
  50. <dependency>
  51. <groupId>com.github.pagehelper</groupId>
  52. <artifactId>pagehelper</artifactId>
  53. <version>5.1.2</version>
  54. </dependency>
  55. </dependencies>
  56.  
  57. </project>

最主要的是:

  1. <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.2</version>
    </dependency>
    随后需要在spring配置(spring-dao)文件里配置PageHelper
  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://www.springframework.org/schema/context
  7. http://www.springframework.org/schema/context/spring-context.xsd">
  8.  
  9. <context:component-scan base-package="com.dong.parking.dao"/>
  10.  
  11. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  12. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  13. <property name="url"
  14. value="jdbc:mysql://localhost:3306/car_park?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false"/>
  15. <property name="username" value="root"/>
  16. <property name="password" value="root"/>
  17. </bean>
  18.  
  19. <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  20. <property name="typeAliasesPackage" value="com.dong.parking.entity"/>
  21. <property name="dataSource" ref="dataSource"/>
  22. <!--配置PageHelper-->
  23. <property name="plugins">
  24. <array>
  25. <bean class="com.github.pagehelper.PageInterceptor">
  26. <property name="properties">
  27. <value>
  28. offsetAsPageNum=true
  29. rowBoundsWithCount=true
  30. pageSizeZero=true
  31. reasonable=true
  32. </value>
  33. </property>
  34. </bean>
  35. </array>
  36. </property>
  37. </bean>
  38. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  39. <property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
  40. <property name="basePackage" value="com.dong.parking.dao"/>
  41. </bean>
  42. </beans>

最主要的为:

  1. <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  2. <property name="typeAliasesPackage" value="com.dong.parking.entity"/>
  3. <property name="dataSource" ref="dataSource"/>
  4. <!--配置PageHelper-->
  5. <property name="plugins">
  6. <array>
  7. <bean class="com.github.pagehelper.PageInterceptor">
  8. <property name="properties">
  9. <value>
  10. offsetAsPageNum=true
  11. rowBoundsWithCount=true
  12. pageSizeZero=true
  13. reasonable=true
  14. </value>
  15. </property>
  16. </bean>
  17. </array>
  18. </property>
  19. </bean>

Ok,关于配置已经好了,现在进入parking,结构如下,以红框标识的为例

ParkSpaceController代码如下

  1. package com.dong.parking.controller;
  2.  
  3. import com.dong.parking.biz.ParkSpaceBiz;
  4. import com.dong.parking.entity.ParkSpace;
  5. import com.dong.parking.entity.User;
  6. import com.dong.parking.global.Constant;
  7. import com.github.pagehelper.Page;
  8. import com.github.pagehelper.PageHelper;
  9. import com.github.pagehelper.PageInfo;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Controller;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RequestParam;
  14.  
  15. import javax.servlet.http.HttpSession;
  16. import java.util.List;
  17. import java.util.Map;
  18.  
  19. @Controller("parkSpaceController")
  20. @RequestMapping("/parkSpace")
  21. public class ParkSpaceController {
  22. @Autowired
  23. private ParkSpaceBiz parkSpaceBiz;
  24.  
  25. @RequestMapping(value = "/list")
  26. public String list(Map<String, Object> map, @RequestParam(value = "status", required = false) Integer status,
  27. @RequestParam(defaultValue = "1", required = true, value = "pageNo") Integer pageNo) {
  28. List<ParkSpace> list = null;
  29. Integer pageSize = 2;
  30. PageHelper.startPage(pageNo, pageSize);
  31. if (status == null)
  32. list = parkSpaceBiz.findAll();
  33. else
  34. list = parkSpaceBiz.findByStatus(status);
  35.  
  36. PageInfo<ParkSpace> pageInfo = new PageInfo<ParkSpace>(list);
  37. map.put("pageInfo", pageInfo);
  38. return "park_space_list";
  39. }
  40.  
  41. @RequestMapping("/to_update")
  42. public String toUpdate(Map<String, Object> map, @RequestParam int id) {
  43. map.put("floor", Constant.getFloor());
  44. map.put("area", Constant.getArea());
  45. map.put("parkSpace", parkSpaceBiz.findById(id));
  46. return "park_space_update";
  47. }
  48.  
  49. @RequestMapping("/update")
  50. public String update(ParkSpace parkSpace, HttpSession session) {
  51. User user = (User) session.getAttribute("user");
  52. parkSpace.setUpdateBy(user.getSn());
  53. parkSpaceBiz.edit(parkSpace);
  54. return "redirect:list";
  55. }
  56.  
  57. @RequestMapping("/to_add")
  58. public String toAdd(Map<String, Object> map) {
  59. map.put("floor", Constant.getFloor());
  60. map.put("area", Constant.getArea());
  61. map.put("parkSpace", new ParkSpace());
  62. return "park_space_add";
  63. }
  64.  
  65. @RequestMapping("/add")
  66. public String add(ParkSpace parkSpace, HttpSession session) {
  67. User user = (User) session.getAttribute("user");
  68. parkSpace.setCreateBy(user.getSn());
  69. parkSpace.setUpdateBy(user.getSn());
  70. parkSpaceBiz.add(parkSpace);
  71. return "redirect:list";
  72. }
  73.  
  74. @RequestMapping(value = "/remove", params = "id")
  75. public String remove(int id) {
  76. parkSpaceBiz.remove(id);
  77. return "redirect:list";
  78. }
  79. }

我们关注一下list方法

  1. @RequestMapping(value = "/list")
  2. public String list(Map<String, Object> map, @RequestParam(value = "status", required = false) Integer status,
  3. @RequestParam(defaultValue = "1", required = true, value = "pageNo") Integer pageNo) {
  4. List<ParkSpace> list = null;
  5. Integer pageSize = 2;
  6. PageHelper.startPage(pageNo, pageSize);
  7. if (status == null)
  8. list = parkSpaceBiz.findAll();
  9. else
  10. list = parkSpaceBiz.findByStatus(status);
  11.  
  12. PageInfo<ParkSpace> pageInfo = new PageInfo<ParkSpace>(list);
  13. map.put("pageInfo", pageInfo);
  14. return "park_space_list";
  15. }

这里的形参pageNo为前台传来的值。这里的步骤可归结如下

步骤1:PageHelper.startPage(pageNo,pageSize),设置每页显示的个数和页数

步骤2:List<Bean> list = beanService.find(),获得bean的结合(这里以Bean代表一般的实体类)

步骤3:PageInfo<Bean> pageInfo = new PageInfo<Bean>(list);   将list集合封装到pageInfo对象。

步骤4:map.put("pageInfo",pageInfo);将pageInfo对象回给前台

好了,现在咱们来到前台页面,park_space_list.jsp代码如下

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3.  
  4. <jsp:include page="top.jsp"/>
  5.  
  6. <section id="content" class="table-layout animated fadeIn">
  7. <div class="tray tray-center">
  8. <div class="content-header">
  9. <h2> 员工列表 </h2>
  10. <p class="lead"></p>
  11. </div>
  12. <div class="admin-form theme-primary mw1000 center-block" style="padding-bottom: 175px;">
  13. <div class="panel heading-border">
  14. <div class="panel-menu">
  15. <div class="row">
  16. <div class="hidden-xs hidden-sm col-md-3">
  17. <div class="btn-group">
  18. <button type="button" class="btn btn-default light">
  19. <i class="fa fa-refresh"></i>
  20. </button>
  21. <button type="button" class="btn btn-default light">
  22. <i class="fa fa-trash"></i>
  23. </button>
  24. <button type="button" class="btn btn-default light">
  25. <i class="fa fa-plus"
  26. onclick="javascript:window.location.href='/parkSpace/to_add';"></i>
  27. </button>
  28. </div>
  29. </div>
  30. <div class="col-xs-12 col-md-9 text-right">
  31. <div class="btn-group">
  32. <button type="button" class="btn btn-default light">
  33. <i class="fa fa-chevron-left"></i>
  34. </button>
  35.  
  36. <button type="button" class="btn btn-default light">
  37. <i class="fa fa-chevron-right"></i>
  38. </button>
  39. </div>
  40. </div>
  41. </div>
  42. </div>
  43. <div class="panel-body pn">
  44. <table id="message-table" class="table admin-form theme-warning tc-checkbox-1">
  45. <thead>
  46. <tr class="">
  47. <th class="text-center hidden-xs">Select</th>
  48. <th class="hidden-xs">楼层</th>
  49. <th class="hidden-xs">区域</th>
  50. <th class="hidden-xs">车位号</th>
  51. <th class="hidden-xs">状态</th>
  52.  
  53. <th>操作</th>
  54. </tr>
  55. </thead>
  56. <tbody>
  57. <c:forEach items="${pageInfo.list}" var="space">
  58. <tr class="message-unread">
  59. <td class="hidden-xs">
  60. <label class="option block mn">
  61. <input type="checkbox" name="mobileos" value="FR">
  62. <span class="checkbox mn"></span>
  63. </label>
  64. </td>
  65. <td>${space.floor}</td>
  66. <td>${space.area}</td>
  67. <td>${space.spaceId}</td>
  68. <td>
  69. <c:if test="${space.status == 0}">空闲</c:if>
  70. <c:if test="${space.status == 1}">占用</c:if>
  71. <c:if test="${space.status == 2}">预定</c:if>
  72. </td>
  73.  
  74. <td>
  75. <a href="/parkSpace/to_update?id=${space.id}">编辑</a>
  76. <a href="/parkSpace/remove?id=${space.id}">删除</a>
  77. </td>
  78. </tr>
  79. </c:forEach>
  80. </tbody>
  81. </table>
  82. <p>当前 ${pageInfo.pageNum }页,总${pageInfo.pages }
  83. 页,总 ${pageInfo.total } 条记录
  84. </p>
  85. <a href="list?pageNo=${pageInfo.getFirstPage()}">首页</a>
  86. <c:if test="${pageInfo.hasPreviousPage }">
  87. <a href="list?pageNo=${pageInfo.pageNum-1}">上一页</a>
  88. </c:if>
  89.  
  90. <c:if test="${pageInfo.hasNextPage }">
  91. <a href="list?pageNo=${pageInfo.pageNum+1}">下一页</a>
  92. </c:if>
  93.  
  94. <a href="list?pageNo=${pageInfo.getLastPage()}">末页</a>
  95. </div>
  96. </div>
  97. </div>
  98. </div>
  99. </section>
  100.  
  101. <jsp:include page="bottom.jsp"/>

我们关注于

  1. <div class="panel-body pn">
  2. <table id="message-table" class="table admin-form theme-warning tc-checkbox-1">
  3. <thead>
  4. <tr class="">
  5. <th class="text-center hidden-xs">Select</th>
  6. <th class="hidden-xs">楼层</th>
  7. <th class="hidden-xs">区域</th>
  8. <th class="hidden-xs">车位号</th>
  9. <th class="hidden-xs">状态</th>
  10.  
  11. <th>操作</th>
  12. </tr>
  13. </thead>
  14. <tbody>
  15. <c:forEach items="${pageInfo.list}" var="space">
  16. <tr class="message-unread">
  17. <td class="hidden-xs">
  18. <label class="option block mn">
  19. <input type="checkbox" name="mobileos" value="FR">
  20. <span class="checkbox mn"></span>
  21. </label>
  22. </td>
  23. <td>${space.floor}</td>
  24. <td>${space.area}</td>
  25. <td>${space.spaceId}</td>
  26. <td>
  27. <c:if test="${space.status == 0}">空闲</c:if>
  28. <c:if test="${space.status == 1}">占用</c:if>
  29. <c:if test="${space.status == 2}">预定</c:if>
  30. </td>
  31.  
  32. <td>
  33. <a href="/parkSpace/to_update?id=${space.id}">编辑</a>
  34. <a href="/parkSpace/remove?id=${space.id}">删除</a>
  35. </td>
  36. </tr>
  37. </c:forEach>
  38. </tbody>
  39. </table>
  40. <p>当前 ${pageInfo.pageNum }页,总${pageInfo.pages }
  41. 页,总 ${pageInfo.total } 条记录
  42. </p>
  43. <a href="list?pageNo=${pageInfo.getFirstPage()}">首页</a>
  44. <c:if test="${pageInfo.hasPreviousPage }">
  45. <a href="list?pageNo=${pageInfo.pageNum-1}">上一页</a>
  46. </c:if>
  47.  
  48. <c:if test="${pageInfo.hasNextPage }">
  49. <a href="list?pageNo=${pageInfo.pageNum+1}">下一页</a>
  50. </c:if>
  51.  
  52. <a href="list?pageNo=${pageInfo.getLastPage()}">末页</a>
  53. </div>

最终的效果如图所示:

水平有限,表述还是很不好

关于在SSM框架下使用PageHelper的更多相关文章

  1. ssm框架下怎么批量删除数据?

    ssm框架下批量删除怎么删除? 1.单击删除按钮选中选项后,跳转到js函数,由函数处理 2. 主要就是前端的操作 js 操作(如何全选?如何把选中的数据传到Controller中) 3.fun()函数 ...

  2. Jquery DataTable AJAX跨域请求的解决方法及SSM框架下服务器端返回JSON格式数据的解决方法

    如题,用HBuilder开发APP,涉及到用AJAX跨域请求后台数据,刚接触,费了不少时间.幸得高手指点,得以解决. APP需要用TABLE来显示数据,因此采用了JQ 的DataTable.  在实现 ...

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

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

  4. ssm框架下实现文件上传

      1.由于ssm框架是使用Maven进行管理的,文件上传所需要的jar包利用pom.xml进行添加,如下所示: <properties> <commons-fileupload.v ...

  5. SSM框架下 Failed to load resource: the server responded with a status of 404 (Not Found)错误

    这个错误提示的是js的引用路径有错: 1.检查应用路径是否正确(我的问题是路径是正确的但是去到页面就会提示404错误) 引用路径,最好都使用绝对路径 <script type="tex ...

  6. SSM框架下的redis缓存

    基本SSM框架搭建:http://www.cnblogs.com/fuchuanzhipan1209/p/6274358.html 配置文件部分: 第一步:加入jar包 pom.xml <!-- ...

  7. SSM框架下结合 log4j、slf4j打印日志

    首先加入log4j和slf4j的jar包 <!-- 日志处理 <!-- slf4j日志包--> <dependency> <groupId>org.slf4j ...

  8. ssm框架下的文件上传和文件下载

    最近在做一个ssm的项目,遇到了添加附件和下载的功能,在网上查了很多资料,发现很多都不好用,经过摸索,发现了一套简便的方法,和大家分享一下. 1.在自己已经构建好的maven  web项目中 pom. ...

  9. PageHelper--Mybatis分页插件(ssm框架下的使用)

    1.导入PageHelper依赖 <!-- MyBatis 分页插件 --> <dependency> <groupId>com.github.pagehelper ...

随机推荐

  1. POJ1060 Modular multiplication of polynomials解题报告 (2011-12-09 20:27:53)

    Modular multiplication of polynomials Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3 ...

  2. Java8中聚合操作collect、reduce方法详解

    Stream的基本概念 Stream和集合的区别: Stream不会自己存储元素.元素储存在底层集合或者根据需要产生.Stream操作符不会改变源对象.相反,它会返回一个持有结果的新的Stream.3 ...

  3. codeforces 776C Molly's Chemicals(连续子序列和为k的次方的个数)

    题目链接 题意:给出一个有n个数的序列,还有一个k,问在这个序列中有多少个子序列使得sum[l, r] = k^0,1,2,3…… 思路:sum[l, r] = k ^ t, 前缀和sum[r] = ...

  4. hsv空间

    hsv在不同的软件中,有不同的阈值, 在描述阈值之前,看一下它的定义,按照标准的定义,hsv应该是从0°到360°的一个环,加上一个表示亮度的轴,重点就是那个环. 这个环如图一,0°一般为红色120° ...

  5. Android开发中高效的数据结构

    android开发中,在java2ee或者android中常用的数据结构有Map,List,Set,但android作为移动平台,有些api(很多都是效率问题)显然不够理想,本着造更好轮子的精神,an ...

  6. the referenced script on this behaviour is missing!

    1.看看你脚本上挂的某个组件是不是发生了变动,比如被删除了什么的 2.最有可能的是你创建完脚本后,中途改过脚本的名字,致使脚本名字和内部的名字不统一.

  7. Linux下视频流媒体直播服务器搭建详解

    目标: 搭建网络直播流媒体服务器系统(Linux操作系统) 背景: 用于OTT-TV大并发的直播和点播的一套流媒体服务器系统.支持N x 24小时录制回看和直播的服务器端解决方案. 解决方案: l  ...

  8. Centos下Yum安装PHP5.5

    默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | grep php 如果有安装的PHP包,先删除他们 ...

  9. netty中的Channel、ChannelPipeline

    一.Channel与ChannelPipeline关系 每一个新创建的 Channel 都将会被分配一个新的 ChannelPipeline.这项关联是永久性 的:Channel 既不能附加另外一个 ...

  10. CentOS 配置RDP

    XRDP服务器 CentOS安装XRDP实现远程桌面访问: 由于安装的是远程桌面,因此需要安装桌面显示服务:# yum install vnc-server 下面开始配置XRDP服务 l  配置环境: ...