SSM学习记录(四)——通过PageHelper实现分页

9 篇文章 0 订阅
8 篇文章 0 订阅

2018.5.3

仅为个人理解 不足之处欢迎指正~


在上一篇文章SSM学习记录(三)——通过limit实现分页

通过Limit语句调控每次查询的数据条数实现了分页

而这一方式比较的繁琐

我们可以看到为了保证结果的正确

需要写count语句来确认数量 需要写逻辑来计算页数 在前端页面(jsp)中

对于上下页、首末页的跳转也需要在EL表达式中加入计算



本节将使用PageHelper插件来实现分页功能

让分页这一操作更加轻松


第一步:在Maven中添加PageHelper

PageHelper的具体信息可以查看官方文档


本文使用的PageHelper版本较低,为4.1.2 


目前官网已经发布的版本为5.1.4

若读者使用的是5.0以上版本的PageHelper 配置方式与本文有些许差别 具体请参考官方文档


pom.xml中增加以下语句:



目前使用的pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.tzy</groupId>
  <artifactId>MVCDemo2</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>MVCDemo1 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties>
      <spring.version>4.3.0.RELEASE</spring.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
    	<groupId>mysql</groupId>
    	<artifactId>mysql-connector-java</artifactId>
    	<version>5.1.34</version>
    </dependency>
	<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.1</version>
	</dependency>
    <dependency>
    	<groupId>org.mybatis</groupId>
    	<artifactId>mybatis</artifactId>
    	<version>3.4.5</version>
    </dependency>
    <dependency>
    	<groupId>com.github.pagehelper</groupId>
    	<artifactId>pagehelper</artifactId>
    	<version>4.2.1</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-jdbc</artifactId>
    	<version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>aopalliance</groupId>
    	<artifactId>aopalliance</artifactId>
    	<version>1.0</version>
    </dependency>
    <dependency>
    	<groupId>org.aspectj</groupId>
    	<artifactId>aspectjweaver</artifactId>
    	<version>1.6.2</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-aop</artifactId>
    	<version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
    	<groupId>jstl</groupId>
    	<artifactId>jstl</artifactId>
    	<version>1.2</version>
    </dependency>
    <dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>
    <dependency>
    	<groupId>com.github.jsqlparser</groupId>
    	<artifactId>jsqlparser</artifactId>
    	<version>0.9.5</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
    <finalName>TestMaven2</finalName>
  </build>
</project>



第二步:配置PageHelper

对PageHelper的配置可以在mybatis的配置文档中进行 

而由于本项目将mybatis的配置整合入了Spring的配置文件中,

所以在这里仅介绍在springConfig中的配置

在mybatis配置文档中的配置请参考官方文档

    <!--配置sessionFactory-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="jdbcDataSource" />
        <property name="mapperLocations">
            <array>
                <value>classpath:Dao/**/*.xml</value>
            </array>
        </property>
        <property name="typeAliasesPackage" value="com.isea533.mybatis.model"/>
        <property name="plugins">
        	<array>
        		<bean class="com.github.pagehelper.PageHelper">
        			<property name="properties">
        				<value>
        					dialect=mysql
        					reasonable=true
        				</value>
        			</property>
        		</bean>
        	</array>
        </property>
    </bean>

其中

是对Pagehelper的具体配置


value中的属性dialect代表使用的数据库类型

reasonable代表合理化参数 比如当查询的页数超过总页数时 若配置为true 则查询最后一页

PageHelper中有非常多的参数  具体使用情况还请阅读官方文档


第三步:Dao层的编写

在接口类中添加了一个方法:


以下是它的实现:


用到的Base属性为:



第四步:service层的编写

在接口类中添加一个方法:



实现非常的简单:



相比之下Limit方法的实现就要增加许多计算


第五步:controller层的编写

其中:

代表每页显示2条数据


第六步:view层的编写

PageHelper.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<!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>PageHelper</title> 
</head> 
<body>
      <center>
      	<table width="200" border="1">
      		<tr>
      		<th scope="col">username</th>
      		<th scope="col">phone</th>
      		<th scope="col">email</th>
      		</tr>
      		<c:forEach begin="0" step="1" items="${userList}" var="list" varStatus="userlist">
      		<tr>
      			<td>${list.username}</td>
      			<td>${list.phone}</td>
      			<td>${list.email}</td>
      		</tr>
      		</c:forEach>
      	</table>
      	<p>一共${page.pages}页</p>
      	<a href="PageHelper?page=${page.firstPage}">第一页</a>
      	<a href="PageHelper?page=${page.nextPage}">下一页</a>
      	<a href="PageHelper?page=${page.prePage}">上一页</a>
      	<a href="PageHelper?page=${page.lastPage}">最后页</a>
      </center>
</body> 
</html>


测试结果:



其他代码:

其他部分代码均未作改动 如有需要前面的文章应该都有提到~



总结:

在PageHelper的自带类PageInfo中,可以看到大致的实现过程和使用到了哪些变量 方法等

 
 

有兴趣的话可以自己研究一下

使用PageHelper不仅可以减少后端的工作量

我之前放在前端使用EL表达式进行的下一页上一页之类的计算操作也可以通过自有属性


来完成 非常的方便 

至于最新版本5.1.4 经过了一段时间的调试终究没有成功

应该是我这里搭配的环境出现了一些问题

所以最终还是使用了4.2.1这个版本


谢谢~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值