Mybatis配置文件(六):plugins配置

在MyBatis中,对某种方法进行拦截调用的机制,被称为plugin插件。使用plugin科技监控方法的调用,还能修改或重写方法逻辑。mybatis中允许使用plugin拦截的方法如下:

Executor  // 操作接口类
	(update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
ParameterHandler // 处理参数接口
	(getParameterObject, setParameters)
ResultSetHandler // 结果集接口
	(handleResultSets, handleOutputParameters)
StatementHandler // 预编译状态接口
	(prepare, parameterize, batch, update, query)

注意:如果想修改或覆盖一个给定的方法,可能会打破MyBatis的核心,需谨慎使用。

下面是一个简单拦截器接口的实现:

@Intercepts({
		@Signature( type= Executor.class,
				    method = "update",
					args = {MappedStatement.class,Object.class}
				   )
})
public class ExamplePlugin implements Interceptor {
	// 对目标方法进行拦截的抽象方法
	public Object intercept(Invocation invocation) throws Throwable {
		return invocation.proceed();
	}
	// 将拦截器插入目标对象
	public Object plugin(Object target) {
		return Plugin.wrap(target, this);
	}
	// 将全局配置文件中的参数注入插件类中
	public void setProperties(Properties properties) {
	}
}

在类头部添加@Intercepts拦截器注解,声明插件类。其中可声明多个@Signature签名注解,type为接口类型,method为拦截器方法名,args是参数信息。

在MyBatis中的全局配置,起到拦截作用:

<plugins>
	<plugin interceptor="com.example.ExamplePlugin">
		<property name="someProperty" value="100"/>
	</plugin>
</plugins>

这样就可以对Executor中的update方法进行拦截了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值