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) {
        }
    
    }
  • 相关阅读:
    判断整数是否为质数?
    汇编debug
    DOS命令 Net config server Net config workstation
    DecimalField的使用
    BiNGO的GO分析
    GO富集分析 信号通路
    Cytoscape软件简介
    git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
    note3
    基因id
  • 原文地址:https://www.cnblogs.com/light-zhang/p/8398458.html
Copyright © 2011-2022 走看看