add stat attribute

This commit is contained in:
axmanwang
2012-04-16 10:31:17 +08:00
parent 7bfd1d5942
commit 449eff3f6e
7 changed files with 149 additions and 40 deletions
@@ -29,6 +29,8 @@ import java.util.Map;
import com.alibaba.druid.filter.FilterChain;
import com.alibaba.druid.filter.FilterChainImpl;
import com.alibaba.druid.stat.JdbcSqlStat;
import com.alibaba.druid.stat.JdbcStatContext;
import com.alibaba.druid.stat.JdbcStatManager;
/**
* @author wenshao<szujobs@hotmail.com>
@@ -41,8 +43,11 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro
protected String lastExecuteSql;
private long lastExecuteTimeNano;
protected JdbcSqlStat sqlStat;
protected boolean firstResultSet;
protected ArrayList<String> batchSqlList;
protected StatementExecuteType lastExecuteType;
public StatementProxyImpl(ConnectionProxy connection, Statement statement, long id){
super(statement, id);
@@ -100,59 +105,74 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro
@Override
public boolean execute(String sql) throws SQLException {
lastExecuteSql = sql;
return createChain().statement_execute(this, sql);
lastExecuteType = StatementExecuteType.Execute;
firstResultSet = createChain().statement_execute(this, sql);
return firstResultSet;
}
@Override
public boolean execute(String sql, int autoGeneratedKeys) throws SQLException {
lastExecuteSql = sql;
return createChain().statement_execute(this, sql, autoGeneratedKeys);
lastExecuteType = StatementExecuteType.Execute;
firstResultSet = createChain().statement_execute(this, sql, autoGeneratedKeys);
return firstResultSet;
}
@Override
public boolean execute(String sql, int[] columnIndexes) throws SQLException {
lastExecuteSql = sql;
return createChain().statement_execute(this, sql, columnIndexes);
lastExecuteType = StatementExecuteType.Execute;
firstResultSet = createChain().statement_execute(this, sql, columnIndexes);
return firstResultSet;
}
@Override
public boolean execute(String sql, String[] columnNames) throws SQLException {
lastExecuteSql = sql;
return createChain().statement_execute(this, sql, columnNames);
lastExecuteType = StatementExecuteType.Execute;
firstResultSet = createChain().statement_execute(this, sql, columnNames);
return firstResultSet;
}
@Override
public int[] executeBatch() throws SQLException {
lastExecuteType = StatementExecuteType.ExecuteBatch;
return createChain().statement_executeBatch(this);
}
@Override
public ResultSet executeQuery(String sql) throws SQLException {
lastExecuteSql = sql;
lastExecuteType = StatementExecuteType.ExecuteQuery;
return createChain().statement_executeQuery(this, sql);
}
@Override
public int executeUpdate(String sql) throws SQLException {
lastExecuteSql = sql;
lastExecuteType = StatementExecuteType.ExecuteUpdate;
return createChain().statement_executeUpdate(this, sql);
}
@Override
public int executeUpdate(String sql, int autoGeneratedKeys) throws SQLException {
lastExecuteSql = sql;
lastExecuteType = StatementExecuteType.ExecuteUpdate;
return createChain().statement_executeUpdate(this, sql, autoGeneratedKeys);
}
@Override
public int executeUpdate(String sql, int[] columnIndexes) throws SQLException {
lastExecuteSql = sql;
lastExecuteType = StatementExecuteType.ExecuteUpdate;
return createChain().statement_executeUpdate(this, sql, columnIndexes);
}
@Override
public int executeUpdate(String sql, String[] columnNames) throws SQLException {
lastExecuteSql = sql;
lastExecuteType = StatementExecuteType.ExecuteUpdate;
return createChain().statement_executeUpdate(this, sql, columnNames);
}
@@ -344,4 +364,12 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro
public void setLastExecuteTimeNano(long lastExecuteTimeNano) {
this.lastExecuteTimeNano = lastExecuteTimeNano;
}
public StatementExecuteType getLastExecuteType() {
return lastExecuteType;
}
public boolean isFirstResultSet() {
return firstResultSet;
}
}