zoukankan      html  css  js  c++  java
  • mybatis拦截器实现查看sql执行效率

    import java.sql.Statement;
    import java.util.Properties;
    
    import org.apache.ibatis.executor.statement.StatementHandler;
    import org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl;
    import org.apache.ibatis.mapping.BoundSql;
    import org.apache.ibatis.plugin.Interceptor;
    import org.apache.ibatis.plugin.Intercepts;
    import org.apache.ibatis.plugin.Invocation;
    import org.apache.ibatis.plugin.Plugin;
    import org.apache.ibatis.plugin.Signature;
    import org.apache.ibatis.session.ResultHandler;
    
    /**
     * Sql执行时间记录拦截器
     */
    @Intercepts({
            @Signature(type = StatementHandler.class, method = "query", args = { Statement.class, ResultHandler.class }),
            @Signature(type = StatementHandler.class, method = "update", args = { Statement.class }),
            @Signature(type = StatementHandler.class, method = "batch", args = { Statement.class }) })
    public class SqlCostInterceptor implements Interceptor {
    
        private static final JakartaCommonsLoggingImpl logger = new JakartaCommonsLoggingImpl("SqlCostInterceptor");
    
        @Override
        public Object intercept(Invocation invocation) throws Throwable {
            long startTime = System.currentTimeMillis();
            StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
            final BoundSql boundSql = statementHandler.getBoundSql();
            try {
                return invocation.proceed();
            } finally {
                final StringBuilder build = new StringBuilder(7);
                build.append("<==  Preparing: ");
                build.append("
    ");
                build.append(boundSql.getSql());
                build.append("
    ");
                build.append("MYBATIS-SQL执行耗时[");
                build.append((System.currentTimeMillis() - startTime));
                build.append("ms]");
                logger.debug(build.toString());
            }
        }
    
        @Override
        public Object plugin(Object target) {
            return Plugin.wrap(target, this);
        }
    
        @Override
        public void setProperties(Properties properties) {
        }
    
    }
  • 相关阅读:
    wp8 入门到精通 测量代码执行时间
    过滤器——Filter
    hisui培训笔记
    监听器——servlet
    easyui导出excel表格和遇到的问题
    Java自定义注解
    Json
    Ajax
    探索Java中new一个对象时发生了什么
    SpringBoot常用注解
  • 原文地址:https://www.cnblogs.com/light-zhang/p/8398458.html
Copyright © 2011-2022 走看看