51、简述Mybatis的插件运行原理,如何编写一个插件

Mybatis的插件运行原理

Mybatis 只支持针对 ParameterHandler、ResultSetHandler、StatementHandler、Executor这4种接口的插件,Mybatis 使用JDK 的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这4种接口对象的方法时,就会进入拦截方法,具体就是 lnvocationHandler 的 invoke0 方法,拦截那些你指定需要拦截的方法。

编写插件

实现 Mybatis 的 Interceptor 接口并复写 intercept0方法,然后在给插件编写注解,指定要拦截哪一个接口的哪些方法即可,在配置文件中配置编写的插件。

@Intercepts ({@signature(type = StatementHandler.class, method = "query", args =
{Statement.class , ResultHandler.class}),
	@signature(type = StatementHandler.class, method = "update" args =
{statement.class}),
	@signature(type = StatementHandler.class, method = "batch", args = {statement.class })})
Component
invocation.proceed()执行具体的业务逻辑

你可能感兴趣的:(mybatis,JDK,动态代理,Interceptor,拦截,插件,数据库)