springboot mybatis 如何让自定义得的插件在pagehelper插件前面执行
时间: 2023-05-29 19:02:09 浏览: 101
springBoot+mybatis集成插件pageHelper
在 SpringBoot 中使用 MyBatis 插件时,默认情况下会先执行 PageHelper 插件,如果您希望自定义的插件在 PageHelper 插件之前执行,则需要进行如下配置:
1. 自定义插件类实现 Interceptor 接口,并在实现类中重写三个方法。
2. 在 MyBatis 配置文件中进行插件配置,同时通过 <plugins> 标签指定插件加载顺序。
示例代码如下:
自定义插件类 MyCustomPlugin.java:
```java
@Intercepts({ @Signature(type = StatementHandler.class, method = "prepare", args = { Connection.class, Integer.class }) })
public class MyCustomPlugin implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
// 自定义插件逻辑
return invocation.proceed();
}
@Override
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {
// 读取配置文件,设置插件属性
}
}
```
MyBatis 配置文件 mybatis-config.xml:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Configuration 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 自定义插件配置 -->
<plugins>
<plugin interceptor="com.example.MyCustomPlugin"/>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="dialect" value="mysql"/>
<property name="reasonable" value="true"/>
</plugin>
</plugins>
<!-- 其他配置 -->
...
</configuration>
```
在以上示例中,我们首先定义了自定义插件类 MyCustomPlugin,并通过 @Intercepts 注解指定需要拦截的方法。然后在 MyBatis 配置文件中,通过 <plugins> 标签加载两个插件,其中自定义插件放在了 PageHelper 插件前面,确保执行顺序满足需求。
阅读全文