mybatis中如何编写一个自定义插件?
admin
2024-03-01 17:31:22

转自:

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

下文笔者讲述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:表示方法参数

相关内容

热门资讯

胜宏科技:公司正持续推进10 ... (来源:科创100ETF基金)胜宏科技(300476)在投资者关系活动记录表中表示,公司具备70层以...
调研速递|蜀道装备接待长江证券... 调研基本情况2026年1月19日下午18:30-19:30,四川蜀道装备科技股份有限公司(以下简称“...
拍拍福州|福州林阳寺梅花开了!...   千年古刹林阳寺梅花盛开,迎来一年之中的颜值巅峰。1月下旬至2月上旬为最佳观赏期。快来赴一场梅香之...
解码山东5.5%GDP增速的底... 来源:@经济观察报微博记者 田进1月23日,山东省统计局发布的数据显示,2025年山东生产总值(GD...
Okura Holdings ... 2026年1月23日,Okura Holdings Limited(股份代号:01655)公告称,通...