关于在SSM框架下使用PageHelper

Posted loki-dong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于在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>
View Code

最主要的为:

 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 
View Code

我们关注一下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"/>
View Code

我们关注于

 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的主要内容,如果未能解决你的问题,请参考以下文章

17-SSM中通过pagehelper分页的实现

ssm下使用分页插件PageHelper进行分页

SSM+PageHelper 使用

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

day01-项目介绍+SSM环境搭建

记一次SSM项目小结