JAVA SSM实现分页查询数据
时间: 2024-01-14 19:03:15 浏览: 35
可以使用 MyBatis 分页插件来实现分页查询,使用 PageHelper.startPage() 方法指定当前页码和每页显示的记录数,然后再查询数据即可。示例代码如下:
PageHelper.startPage(pageNum, pageSize);
List<User> userList = userMapper.selectByExample(example);
PageInfo<User> pageInfo = new PageInfo<>(userList);
return pageInfo;
相关问题
使用ssm框架实现分页查询功能代码实现
好的,下面是使用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框架实现分页查询功能的代码实现。
ssm框架中如何实现数据分页
在SSM框架中,可以使用MyBatis提供的分页插件PageHelper来实现数据分页。
使用方法如下:
1.在项目中引入PageHelper依赖
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
```
2.在MyBatis的配置文件中配置PageHelper插件
```xml
<plugins>
<!-- 分页插件 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="helperDialect" value="mysql"/>
<property name="reasonable" value="true"/>
<property name="supportMethodsArguments" value="true"/>
<property name="params" value="pageNum=page;pageSize=limit;"/>
</plugin>
</plugins>
```
3.在业务层中使用PageHelper.startPage()方法进行分页查询
```java
public List<User> getUserList(int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<User> userList = userDao.getUserList();
return userList;
}
```
其中,PageHelper.startPage()方法用于开启分页功能,pageNum表示当前页码,pageSize表示每页显示的记录数。
4.在Controller层中接收前端传来的分页参数,并调用业务层的方法进行分页查询
```java
@RequestMapping("/user/list")
@ResponseBody
public PageInfo<User> getUserList(@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "10") int pageSize) {
List<User> userList = userService.getUserList(pageNum, pageSize);
PageInfo<User> pageInfo = new PageInfo<>(userList);
return pageInfo;
}
```
其中,PageInfo类是PageHelper提供的封装分页信息的类,包含了当前页码、每页记录数、总记录数、总页数等分页信息。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)