mybatis打开会话后执行一个sql语句时经过如下步骤:
1:SqlSession调用Executor执行器 2:Executor执行器调用StatementHandler(使用ParameterHandler封装参数) 3:StatmentHandler执行底层的JDBC Statement获取ResultSet 4:ResultSetHandler处理ResultSet为用户期望的结果
以上的过程如下图:
在这个执行过程中,如果是我们想要加入自己的逻辑,比如在执行器调用过程中修改sql语句信息,加入分页逻辑。目前mybaits支持Executor,StatementHandler,ParameterHandler,ResultSetHandler定义插件。通过如下步骤定义插件:
1:实现org.apache.ibatis.plugin.Interceptor接口,并根据具体业务实现接口中的方法 2:在类上通过@org.apache.ibatis.plugin.Intercepts注解和org.apache.ibatis.plugin.Signature注解定义要拦截哪个类的哪个方法 3:在全局配置文件中配置自定义插件,配置方式是``
这样mybaits在启动过程中就能加载到自定义的插件,然后在运行阶段应用插件,这样我们自定义的插件就生效了。关于mybaits插件的具体实现过程可以参考这篇文章。



