方案1:AOP
@Aspect
@Component
@Slf4j
public class MapperAspect {
@AfterReturning("execution(* cn.xbmchina.mybatissqltime.mapper.*Mapper.*(..))")
public void logServiceAccess(JoinPoint joinPoint) {
log.info("Completed: " + joinPoint);
}
@Pointcut("execution(* cn.xbmchina.mybatissqltime.mapper.*Mapper.*(..))")
private void pointCutMethod() {
}
@Around("pointCutMethod()")
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
long begin = System.nanoTime();
Object obj = pjp.proceed();
long end = System.nanoTime();
Log.info ("calling mapper method: {}, parameter: {}, execution time: {} nanoseconds, time: {} milliseconds",
pjp.getSignature().toString(), Arrays.toString(pjp.getArgs()),
(end - begin), (end - begin) / 1000000);
return obj;
}
}
方案2:Mybatis插件
import org