mybatis-plus重写的分页拦截器如何注入到项目中
时间: 2024-02-03 21:04:21 浏览: 126
要将自己重写的 Mybatis-Plus 分页拦截器注入到项目中,需要按照以下步骤进行操作:
1. 创建自己的分页拦截器类,并继承 Mybatis-Plus 的分页拦截器类 PaginationInterceptor。
2. 在自己的分页拦截器类中重写 PaginationInterceptor 的方法,实现自己的分页逻辑。
3. 在 Spring Boot 项目中配置自己的分页拦截器类,可以通过在配置文件中配置方式,也可以通过 Java Config 方式实现。以下是通过 Java Config 方式实现的示例代码:
```java
@Configuration
public class MybatisConfig {
@Autowired
private MyPaginationInterceptor myPaginationInterceptor;
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加自己的分页拦截器
interceptor.addInnerInterceptor(myPaginationInterceptor);
return interceptor;
}
}
```
4. 配置完成后,重新启动项目即可生效。
相关问题
mybatis plus 深度分页
Mybatis Plus 在默认情况下是不支持深度分页的,因为它使用了传统的基于 offset 的分页方式,这种方式在大数据量情况下会有性能问题。但是 Mybatis Plus 提供了一个 RowBoundsInterceptor 拦截器,它可以将 offset 分页方式转换成基于游标(cursor) 的分页方式,提高分页性能。
具体步骤如下:
1. 定义 RowBoundsInterceptor 拦截器类,继承自 PerformanceInterceptor 类,并重写其方法。
2. 在 mybatis-config.xml 配置文件中加入 RowBoundsInterceptor 拦截器。
3. 调用 selectMapsPage 方法进行深度分页。
重写mybatisplus分页查询
在MyBatisPlus中,如果你想要自定义分页查询,特别是在需要对原有分页功能进行增强或者重写时,你可以通过创建自定义的PageInterceptor来实现。PageInterceptor是一个拦截器,可以在分页查询前后添加额外的操作。
以下是步骤:
1. **创建插件类**:
首先,你需要创建一个实现了`Intercept`接口的类,这个接口包含了一个方法`doIntercept`,在这个方法里可以添加你的自定义分页逻辑,例如修改分页条件、执行额外的数据处理等。
```java
public class CustomPageInterceptor implements Interceptor {
@Override
public Object doIntercept(Invocation invocation) throws Throwable {
// 获取原生分页查询对象
PageHelper.PageContext pageContext = (PageHelper.PageContext) invocation.getArgs()[0];
// 自定义分页处理
// ...
return invocation.proceed();
}
@Override
public Object plugin(Object target) {
Plugin plugin = Plugin.wrap(target, this);
return Plugin tslint(plugin);
}
@Override
public void setProperties(Properties properties) {}
}
```
2. **启用插件**:
在配置文件中注册你的插件,并设置为全局启用,如Spring Boot的application.yml或application.properties中:
```yaml
mybatis-plus:
global-config:
interceptor-ref: customInterceptor
```
或者在启动类上手动注册:
```java
MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
scannerConfigurer.setBasePackage("your.mapper.package");
Configuration configuration = MybatisConfiguration.me().build();
configuration.addInterceptor(new CustomPageInterceptor());
```
3. **使用分页查询**:
你的实体类和Mapper仍然可以像平时一样进行分页查询,MyBatisPlus会自动调用你的插件里的`doIntercept`方法。
记得在`doIntercept`方法里处理完分页逻辑后,调用`invocation.proceed()`来继续执行原有的查询操作。
阅读全文