mybatis拦截器获取查询结果
时间: 2023-09-18 16:14:42 浏览: 162
MyBatis拦截器及分页插件
4星 · 用户满意度95%
在 MyBatis 中,我们可以通过自定义拦截器来对 SQL 语句进行拦截和修改。如果你想在查询语句执行完成后获取查询结果,可以在拦截器的 `intercept` 方法中获取到 `Invocation.proceed()` 的返回值,也就是查询结果。
例如,以下是一个简单的查询拦截器,在查询完成后打印出查询结果:
```java
@Intercepts({
@Signature(type = StatementHandler.class, method = "query", args = {Statement.class, ResultHandler.class})
})
public class QueryInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
Object result = invocation.proceed();
if (result instanceof List) {
List list = (List) result;
System.out.println("查询结果:" + list);
}
return result;
}
@Override
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {
// do nothing
}
}
```
在上述代码中,我们实现了 MyBatis 的 `Interceptor` 接口,并且使用 `@Intercepts` 注解指定要拦截的方法和参数。在 `intercept` 方法中,我们先调用 `invocation.proceed()` 方法执行原始的查询操作,然后判断返回值是否为 `List` 类型,如果是则打印查询结果。最后将查询结果返回即可。在使用时,只需要将该拦截器注册到 MyBatis 的 `Configuration` 中即可。
阅读全文