mybatis中的插件
2026/8/9 7:42:43 网站建设 项目流程

mybatis支持配置插件,实现自定义的功能增强。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:
Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
ParameterHandler (getParameterObject, setParameters)
ResultSetHandler (handleResultSets, handleOutputParameters)
StatementHandler (prepare, parameterize, batch, update, query)
若配置了插件,构建时则生成对应的代理类,从而实现功能增强。

PageHelper分页插件

PageHelper通过拦截Executor的query方法实现对查询方法的增强(查询总数、添加分页参数等),支持分页查询。
使用步骤:
1、导入PageHelper包

2、mybatis配置文件中指定插件类

3、业务代码执行查询前指定分页参数

插件执行流程

插件都是通过JDK动态代理生成拦截对象的代理类实现的。以PageHelper为例,核心类为:PageInterceptor,该拦截器实现了mybatis的Interceptor接口,mybatis源码中预留了执行插件增强的逻辑,若有插件则生成对应类的代理从而对目标方法进行增强。

因为配置文件中配置了PageInterceptor,所以在生成config对象时InterceptorChain会添加对应的拦截器。

创建sqlsession时会创建执行器Executor,若是存在拦截器,将会生成对应执行器的动态代理类。


因为executor是代理对象,所以执行方法时会执行相应的增强逻辑。


Executor中涉及很多方法,哪些方法要执行拦截增强是通过拦截器中的
@Signature标签指定。类名、方法名及形参列表都要匹配才会拦截。

当执行目标方法时最终会来到intercept执行增强逻辑。

查询总数

拼接sql

业务代码中设置的分页参数会存储到ThreadLocal中,处理分页参数时会从ThreadLocal取。


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询