关于在SSM框架下使用PageHelper

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

这是我的第一篇,也是关于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>

最主要的是:

<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
37         PageInfo<ParkSpace> pageInfo = new PageInfo<ParkSpace>(list);
38         map.put("pageInfo", pageInfo);
39         return "park_space_list";
40     }
41
42     @RequestMapping("/to_update")
43     public String toUpdate(Map<String, Object> map, @RequestParam int id) {
44         map.put("floor", Constant.getFloor());
45         map.put("area", Constant.getArea());
46         map.put("parkSpace", parkSpaceBiz.findById(id));
47         return "park_space_update";
48     }
49
50     @RequestMapping("/update")
51     public String update(ParkSpace parkSpace, HttpSession session) {
52         User user = (User) session.getAttribute("user");
53         parkSpace.setUpdateBy(user.getSn());
54         parkSpaceBiz.edit(parkSpace);
55         return "redirect:list";
56     }
57
58
59     @RequestMapping("/to_add")
60     public String toAdd(Map<String, Object> map) {
61         map.put("floor", Constant.getFloor());
62         map.put("area", Constant.getArea());
63         map.put("parkSpace", new ParkSpace());
64         return "park_space_add";
65     }
66
67     @RequestMapping("/add")
68     public String add(ParkSpace parkSpace, HttpSession session) {
69         User user = (User) session.getAttribute("user");
70         parkSpace.setCreateBy(user.getSn());
71         parkSpace.setUpdateBy(user.getSn());
72         parkSpaceBiz.add(parkSpace);
73         return "redirect:list";
74     }
75
76
77     @RequestMapping(value = "/remove", params = "id")
78     public String remove(int id) {
79         parkSpaceBiz.remove(id);
80         return "redirect:list";
81     }
82 }

我们关注一下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
13         PageInfo<ParkSpace> pageInfo = new PageInfo<ParkSpace>(list);
14         map.put("pageInfo", pageInfo);
15         return "park_space_list";
16     }

这里的形参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>

最终的效果如图所示:

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

原文地址:https://www.cnblogs.com/loki-dong/p/11002724.html

时间: 2024-08-27 22:14:32

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

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

ssm框架下批量删除怎么删除? 1.单击删除按钮选中选项后,跳转到js函数,由函数处理 2. 主要就是前端的操作 js 操作(如何全选?如何把选中的数据传到Controller中) 3.fun()函数(前端) /*添加删除选中栏*/ function fun(){ //给删除选中按钮添加单击事件 document.getElementById("delSelected").onclick = function(){ if(confirm("您确定要删除选中条目吗?"

SSM框架下分页的实现(封装page.java和List&lt;?&gt;)

之前写过一篇博客  java分页的实现(后台工具类和前台jsp页面),介绍了分页的原理. 今天整合了Spring和SpringMVC和MyBatis,做了增删改查和分页,之前的逻辑都写在了Servlet里, 如今用了SSM框架,业务逻辑应该放在业务层(service), 这里有一个小问题:实现分页时,我们需要向页面中传两个参数: page对象(封装了页码,页容,总页数,总记录数,取得选择记录的初始位置) 集合对象(封装了bean类的信息) 也就是说,我们需要从service层获取到两个值,但是一

SSM框架下各个层的解释说明

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.07.08 lutianfei none 持久层:DAO层(mapper) DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此, DAO层的设计首先是设计DAO的接口, 然后在Spring的配置文件中定义此接口的实现类, 然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰, DAO层的数据源配置,以及有关数据库连接的参数都在Sprin

SSM框架下关于Invalid bound statement (not found)的报错

今天尝试使用IDEA搭建了一个小型的SSM框架,在连接数据库进行测试的时候后台报了一个“Invalid bound statement (not found)的错误,如图所示: 参阅了网上的各种答案,大部分都是在说mapper.xml中的namespace的位置以及package的名称有关系,再三确定namespace的位置以及package书写正确后问题依旧存在,尝试在pom.xml中的build中的添加如下代码后问题解决,具体的原因等有时间在慢慢研究. <resources> <re

SSM框架下的redis缓存

基本SSM框架搭建:http://www.cnblogs.com/fuchuanzhipan1209/p/6274358.html 配置文件部分: 第一步:加入jar包 pom.xml <!-- spring-redis实现 --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> &l

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

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

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

最近在做一个ssm的项目,遇到了添加附件和下载的功能,在网上查了很多资料,发现很多都不好用,经过摸索,发现了一套简便的方法,和大家分享一下.1.文件上传前台页面使用了easyui,代码如下: <table> <tr> <td>附件</td> <td> <input class="easyui-filebox" type="file" name="file1" id="fi

SSM框架下的学生管理系统--序言

先开个博,占个坑,也是督促自己尽快提上日程.这是为初学者写的一个系列性的文章,我会不断更新,希望看到文章的人能有所收获 简单介绍下SSM,第一个S指的是Spring,第二个S指的是SpringMVC,最后一个M指的是Mybatis,我们这个系统用eclipse来开发,关于eclipse的安装我就不介绍了,网上有很多教程,大家可以找来安装一下,如果里面有用法不会的可以在评论里留言. 原文地址:https://www.cnblogs.com/blackflower/p/11528889.html

SSM框架下的JAVA学生在线选课系统

今天和一个朋友共同完成了一个学生在线选课系统项目,我们在开发时选用的框架是SSM(MYECLIPSE)框架.我这个朋友知识有限,只会这个框架,哈哈,都是为了方便他.和往常一样选用简单又便捷的MYECLIPSE作为开发工具,这是一个 后台项目.这个系统的介绍是这样的:学生在线选课系统对于学校的决策者和管理者来说是至关重要的.针对选课系统的特点及其应用需求,采用基于JAVA的集成开发环境,开发出一套集数据查询.数据交换和数据维护等功能的网上模拟选课系统.设计了一种基于Web的学生选课系统,该系统采用