使用ssm框架实现分页查询功能代码实现
时间: 2023-12-21 17:05:37 浏览: 103
好的,下面是使用SSM框架实现分页查询功能的代码实现。以下示例使用PageHelper插件进行分页,Mapper接口使用注解方式配置SQL语句。
1. 在Spring配置文件中配置MyBatis分页插件和数据源等相关信息。
```xml
<!-- MyBatis分页插件配置 -->
<bean id="pageHelper" class="com.github.pagehelper.PageHelper">
<property name="properties">
<value>
dialect=mysql
reasonable=true
supportMethodsArguments=true
params=count=countSql
autoRuntimeDialect=true
</value>
</property>
</bean>
<!-- 数据源配置 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- MyBatis SqlSessionFactory 配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
<property name="plugins">
<array>
<ref bean="pageHelper"/>
</array>
</property>
</bean>
<!-- MyBatis MapperScannerConfigurer 配置 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.mapper"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
```
2. 在Mapper接口中定义查询方法,使用MyBatis注解方式配置SQL语句,同时使用PageHelper插件提供的分页参数注解(例如@PageNum、@PageSize)。
```java
public interface UserMapper {
/**
* 根据条件查询用户列表
* @param name 用户名,模糊查询
* @param pageNum 当前页码
* @param pageSize 每页显示多少条数据
* @return 用户列表
*/
@Select("select * from user where name like '%${name}%'")
List<User> findUsersByName(@Param("name") String name, @PageNum int pageNum, @PageSize int pageSize);
}
```
3. 在Service层中调用Mapper接口中定义的查询方法,同时传入分页参数。
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public Page<User> findUsersByName(String name, int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize); // 设置分页参数
List<User> userList = userMapper.findUsersByName(name, pageNum, pageSize); // 调用Mapper接口中定义的查询方法
return (Page<User>) userList;
}
}
```
4. 在Controller层中获取用户传递的分页参数(例如当前页码、每页显示多少条数据等),并且调用Service层中的方法进行分页查询。
```java
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public String findUsersByName(Model model,
@RequestParam(name = "name", required = false, defaultValue = "") String name,
@RequestParam(name = "pageNum", required = false, defaultValue = "1") int pageNum,
@RequestParam(name = "pageSize", required = false, defaultValue = "10") int pageSize) {
Page<User> userPage = userService.findUsersByName(name, pageNum, pageSize); // 调用Service层中的方法进行分页查询
model.addAttribute("userPage", userPage);
return "userList";
}
}
```
5. 在前端页面中展示查询结果,并且展示分页信息(例如总共有多少条数据、当前在第几页、每页显示多少条数据等),同时提供分页导航功能。
```html
<!-- userList.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户列表</title>
</head>
<body>
<h1>用户列表</h1>
<form action="/users" method="get">
<input type="text" name="name" value="${param.name}"/>
<input type="submit" value="搜索"/>
</form>
<table border="1">
<thead>
<tr>
<th>ID</th>
<th>用户名</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<c:forEach items="${userPage.list}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.age}</td>
</tr>
</c:forEach>
</tbody>
</table>
<div>
<span>共${userPage.total}条数据</span>
<span>当前在第${userPage.pageNum}页</span>
<span>每页${userPage.pageSize}条数据</span>
<c:if test="${userPage.hasPreviousPage}">
<a href="/users?pageNum=${userPage.prePage}&pageSize=${userPage.pageSize}&name=${param.name}">上一页</a>
</c:if>
<c:if test="${userPage.hasNextPage}">
<a href="/users?pageNum=${userPage.nextPage}&pageSize=${userPage.pageSize}&name=${param.name}">下一页</a>
</c:if>
</div>
</body>
</html>
```
以上就是使用SSM框架实现分页查询功能的代码实现。
阅读全文