mybatisplus3.4.3.4分页拦截器怎么写
时间: 2024-08-08 18:01:39 浏览: 54
MyBatis Plus 提供了一套简洁的 API 来简化 MyBatis 的操作,其中 `PageHelper` 是用于分页查询的工具类。然而,在 MyBatis Plus 本身并不直接提供分页拦截器的功能,它是通过集成 MyBatis 和 PageHelper 来支持分页功能。
如果你想要自定义分页拦截器,你需要理解的是 MyBatis Plus 已经内置了对分页的支持,并不需要再额外引入自定义的拦截器来处理分页逻辑。下面是如何在项目中配置并使用 MyBatis Plus 分页功能的例子:
### 配置步骤
1. **添加依赖**:首先确保你在项目的 pom.xml 文件或其他构建工具文件中已经添加了 MyBatis Plus 相关依赖以及 PageHelper 的依赖。
```xml
<dependencies>
<!-- MyBatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.x.y</version>
</dependency>
<!-- PageHelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.x.y</version>
</dependency>
</dependencies>
```
注意版本号需要根据实际情况选择合适的版本。
2. **配置分页**:在 Spring Boot 的应用启动类上添加注解 `@MapperScan` 并指定需要扫描的包路径。
```java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
```
这里定义了一个名为 `PaginationInterceptor` 的分页拦截器类,它会自动处理分页相关的 SQL 查询。
### 使用示例
假设你有一个 User 类型的对象,你想获取第一页的所有用户信息,可以这样做:
```java
@Service
public class UserService {
@Autowired
private IBaseMapper<User> baseMapper;
public List<User> getUsers(int pageNum) {
// 使用MyBatis Plus的分页功能
Page<User> page = new Page<>(pageNum, 10); // 第 `pageNum` 页,每页显示10条数据
return baseMapper.selectPage(page, null).getRecords();
}
}
```
在这个例子中,`selectPage` 方法返回的 `PageInfo` 包含了当前分页的数据列表、总记录数等信息。
### 自定义分页逻辑?
虽然 MyBatis Plus 内部已经集成了分页功能,但如果想自定义分页逻辑,比如根据特定条件进行排序、过滤等,通常是在 SQL 映射文件 (`mapper.xml`) 中进行配置,而不是通过拦截器的方式。例如,你可以创建一个特定的 SQL 查询来满足自定义的分页需求:
```xml
<mapper namespace="com.example.mapper.UserMapper">
<select
id="getUserList"
resultType="User"
parameterType="com.example.param.PageParam">
SELECT * FROM user WHERE condition ORDER BY order_column LIMIT #{startIndex},#{pageSize}
</select>
</mapper>
```
这里的 `PageParam` 封装了开始索引和页面大小的信息,你可以在业务逻辑中传递给这个类,从而调整查询结果。
总结来说,MyBatis Plus 内置了对分页的强大支持,通常不需要自定义分页拦截器。如果需要更复杂的分页逻辑,可以利用提供的 API 或者直接在 SQL 映射文件中定制 SQL 查询来实现。
阅读全文