重写mybatisplus分页查询
时间: 2024-09-28 15:01:49 浏览: 46
Spring Boot(五)之跨域、自定义查询及分页
在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()`来继续执行原有的查询操作。
阅读全文