Mybatis拦截器 http://www.cnblogs.com/fangjian0423/p/mybatis-interceptor.html

两个重要注解@Intercepts@Signature

@Intercepts用于表示当前对象是Interceptor拦截器,

@Signature用于展示需要拦截的接口、方法和参数。
eg:
@Intercepts(@Signature(method=”handleResultSets”,type=ResultSetHandler.class,args={Statement.class}))

这里的method就是org.apache.ibatis.executor.Executor里面的方法, 接口为:

 

自己的一个打印参数的插件:

 

写个mybatis的拦截插件,实现将所有执行的sql写入文件里 原文 http://3131854.blog.51cto.com/3121854/1147446
mybatis使用拦截器显示sql,使用druid配置连接信息 http://www.cnblogs.com/babyhhcsy/p/4500884.html@Intercepts( {
@Signature(method = “query”, type = Executor.class, args = {
MappedStatement.class, Object.class, RowBounds.class,
ResultHandler.class }),
@Signature(method = “prepare”, type = StatementHandler.class, args = { Connection.class }) })
@Intercepts标记了这是一个Interceptor,然后在@Intercepts中定义了两个@Signature,即两个拦截点。第一个@Signature我们定义了该Interceptor将拦截Executor接口中参数类型为MappedStatement、Object、RowBounds和ResultHandler的query方法;第二个@Signature我们定义了该Interceptor将拦截StatementHandler中参数类型为Connection的prepare方法。

这次项目中要求把所有mybatis所执行的sql都记录到一个文件中,下面是自己写的一个插件(源是参考网上一个重写mybatis分页插件的例子):

1.配置插件(在mybatis的配置文件里mybatis.xml配置自己写的这个插件(拦截器)):

2.MyBatisSQLInterceptor的内容: