springmvc调用pageHelper实现分页功能
时间: 2023-07-12 20:36:36 浏览: 94
使用 PageHelper 插件可以更方便地实现 Spring MVC 分页功能,以下是实现步骤:
1. 在 pom.xml 中添加 PageHelper 依赖
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.1</version>
</dependency>
```
2. 在 Spring MVC 配置文件中配置 PageHelper
```xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
helperDialect=mysql
reasonable=true
supportMethodsArguments=true
params=count=countSql
</value>
</property>
</bean>
</array>
</property>
</bean>
```
3. 在控制器中调用 PageHelper.startPage() 方法设置分页参数
```java
@RequestMapping("/list")
public ModelAndView list(@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize) {
ModelAndView mav = new ModelAndView("list");
PageHelper.startPage(pageNum, pageSize);
List<User> userList = userService.list();
PageInfo<User> pageInfo = new PageInfo<>(userList);
mav.addObject("userList", userList);
mav.addObject("pageInfo", pageInfo);
return mav;
}
```
4. 在视图中显示分页链接和数据
```html
<ul>
<c:forEach begin="1" end="${pageInfo.pages}" var="i">
<li><a href="?pageNum=${i}&pageSize=${pageInfo.pageSize}">${i}</a></li>
</c:forEach>
</ul>
<table>
<thead>
<tr>
<th>Username</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<c:forEach items="${pageInfo.list}" var="user">
<tr>
<td>${user.username}</td>
<td>${user.email}</td>
</tr>
</c:forEach>
</tbody>
</table>
```
这样就完成了 Spring MVC 调用 PageHelper 插件实现分页功能的实现。需要注意的是,PageHelper 插件默认只对最近的一个查询生效,如果有多个查询需要分页,需要在每个查询前都调用 PageHelper.startPage() 方法。同时,还需要处理一些异常情况,比如参数非法、页码超出范围等。
阅读全文