package com.moral.api.config.mybatis; import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.plugin.*; import org.apache.ibatis.reflection.DefaultReflectorFactory; import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.SystemMetaObject; import java.sql.Connection; import java.util.Properties; import static javax.xml.bind.JAXBIntrospector.getValue; /** * @ClassName MybatisIntercept * @Description TODO * @Author 陈凯裕 * @Date 2021/9/17 10:57 * @Version TODO **/ //@Component /*@Intercepts({ //type指定代理的是那个对象,method指定代理Executor中的那个方法,args指定Executor中的query方法都有哪些参数对象 //由于Executor中有两个query,因此需要两个@Signature @Signature(type = Executor.class,method = "query",args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class}), @Signature(type = Executor.class, method = "query", args = { MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class })//需要代理的对象和方法 })*/ @Intercepts({ //type指定代理的是那个对象,method指定代理Executor中的那个方法,args指定Executor中的query方法都有哪些参数对象 //由于Executor中有两个query,因此需要两个@Signature @Signature(method = "prepare", type = StatementHandler.class, args = {Connection.class,Integer.class}) }) public class MybatisIntercept implements Interceptor { @Override public Object intercept(Invocation invocation) throws Throwable { System.out.println(11); return null; } @Override public Object plugin(Object target) { Object wrap = Plugin.wrap(target, this); return wrap; } @Override public void setProperties(Properties properties) { } }