mybatis中如何编写一个自定义插件?

java-教程王 MyBatis 发布时间:2022-04-25 11:17:17 阅读数:4630 1
下文笔者讲述mybatis中编写自定义插件的方法分享,如下所示
Mybatis自定义插件主要借助Mybatis四大对象:
   (Executor、StatementHandler 、ParameterHandler 、ResultSetHandler)进行拦截 

Executor:拦截执行器的方法(log记录) 
StatementHandler:拦截Sql语法构建的处理 
ParameterHandler:拦截参数的处理 
ResultSetHandler:拦截结果集的处理 
例:
Mybatis实现自定义插件的示例分享
Mybatis自定义插件必须实现Interceptor接口
public interface Interceptor {
    Object intercept(Invocation invocation) throws Throwable;
    Object plugin(Object target);
    void setProperties(Properties properties);
}
intercept方法:拦截器具体处理逻辑方法 
plugin方法:根据签名signatureMap生成动态代理对象 
setProperties方法:设置Properties属性

自定义插件demo

// ExamplePlugin.java
@Intercepts({@Signature(
  type= Executor.class,
  method = "update",
  args = {MappedStatement.class,Object.class})})
public class ExamplePlugin implements Interceptor {
  public Object intercept(Invocation invocation) throws Throwable {
  Object target = invocation.getTarget(); //被代理对象
  Method method = invocation.getMethod(); //代理方法
  Object[] args = invocation.getArgs(); //方法参数
  // do something ...... 方法拦截前执行代码块
  Object result = invocation.proceed();
  // do something .......方法拦截后执行代码块
  return result;
  }
  public Object plugin(Object target) {
    return Plugin.wrap(target, this);
  }
  public void setProperties(Properties properties) {
  }
}
一个@Intercepts
可以配置多个@Signature,
            @Signature中的参数定义如下
type:表示拦截的类,这里是Executor的实现类
method:表示拦截的方法,这里是拦截Executor的update方法
args:表示方法参数
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/MyBatis/202204/3107.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者