@SuppressWarnings({"rawtypes", "unchecked"}) @Override public Object intercept(Invocation invocation) throws Throwable { final String name = invocation.getMethod().getName(); final Object target = invocation.getTarget(); if (target instanceof StatementHandler) { pagination(invocation, (StatementHandler) target); } else if (target instanceof Executor) { autoMap(invocation, name); } else if (target instanceof ResultSetHandler) { Object result = invocation.proceed(); if (result instanceof List) { Page page = PAGE_THREAD_LOCAL.get(); if (page != null) { page.addAll((List) result); PAGE_THREAD_LOCAL.remove(); return page; } } return result; } return invocation.proceed(); }