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
@@ -85,16 +85,20 @@ public class PreparedStatementProxyImpl extends StatementProxyImpl implements Pr
@Override
public boolean execute() throws SQLException {
return createChain().preparedStatement_execute(this);
lastExecuteType = StatementExecuteType.Execute;
firstResultSet = createChain().preparedStatement_execute(this);
return firstResultSet;
}
@Override
public ResultSet executeQuery() throws SQLException {
lastExecuteType = StatementExecuteType.ExecuteUpdate;
return createChain().preparedStatement_executeQuery(this);
}
@Override
public int executeUpdate() throws SQLException {
lastExecuteType = StatementExecuteType.ExecuteUpdate;
return createChain().preparedStatement_executeUpdate(this);
}
@@ -36,6 +36,8 @@ public interface StatementProxy extends Statement, WrapperProxy {
JdbcSqlStat getSqlStat();
StatementExecuteType getLastExecuteType();
void setSqlStat(JdbcSqlStat sqlStat);
String getLastExecuteSql();
@@ -44,4 +46,6 @@ public interface StatementProxy extends Statement, WrapperProxy {
void setLastExecuteTimeNano(long nano);
Map<Integer, JdbcParameter> getParameters();
boolean isFirstResultSet();
}
@@ -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;
}
}