请给我一个模板,告诉springboot+mybatis应该怎么使用thymeleaf在前后端写分页
时间: 2024-09-15 17:12:01 浏览: 57
在Spring Boot + MyBatis + Thymeleaf项目中,实现分页功能通常需要以下几个步骤:
1. **添加依赖**:
- 在`pom.xml`文件中添加Thymeleaf、Spring Web、MyBatis以及MyBatis Plus的依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
```
2. **配置数据源**:
如果你的应用有多个数据源,配置对应的数据源。如果没有,只需配置默认数据源。
3. **创建Mapper接口**:
在Mapper接口中定义分页查询的方法,例如使用`Page<T>`接口,其中T是你需要返回的对象类型:
```java
public interface UserMapper {
Page<User> findAll(int pageNum, int pageSize);
}
```
4. **编写Service层**:
使用MyBatis Plus的动态SQL和PageHelper对Mapper方法进行封装,处理分页逻辑:
```java
@Service
public class UserService {
private final UserMapper userMapper;
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
public PageResult<User> findAll(int pageNum, int pageSize) {
PageOptions options = new PageOptions();
options.setPageSize(pageSize);
options.setPageNum(pageNum);
return userMapper.findAll(options);
}
}
```
5. **创建Controller并注入Service**:
在Controller中接收前端传递的分页参数,并调用Service方法展示结果:
```java
@RestController
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/users")
public String getUsers(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
@RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
PageResult<User> pageResult = userService.findAll(pageNum, pageSize);
// 将分页结果渲染到Thymeleaf模板
return "users", pageResult;
}
}
```
6. **创建Thymeleaf视图**:
在resources/templates目录下创建一个名为`users.html`的Thymeleaf模板,用于显示分页数据:
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<table>
<!-- 显示数据 -->
<tr th:each="user : ${users}">
<td th:text="${user.name}"></td>
</tr>
<!-- 分页导航 -->
<div th:fragment="pagination">
<ul>
<li th:classappend="${#lists.indexOf(pagination.current, pagination.page) == 0} ? 'active'" th:text="${pagination.first}"></li>
<!-- 其他页码... -->
</ul>
</div>
</table>
<!-- 引入分页脚部 -->
<script th:src="@{/static/js/pagination.js}" type="text/javascript"></script>
</body>
</html>
```
7. **编写分页脚本(如JavaScript)**:
在静态资源目录`static/js`下的`pagination.js`中,根据从服务器获取的分页信息动态生成页码链接。
阅读全文