Author: cbegin
Date: Sun Mar 29 21:09:53 2009
New Revision: 759783
URL: http://svn.apache.org/viewvc?rev=759783&view=rev
Log:
refactored usages of BoundSQL to avoid calling it too many times. still at
least one redundant call
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/parameter/DefaultParameterHandler.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/CallableStatementHandler.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java?rev=759783&r1=759782&r2=759783&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
Sun Mar 29 21:09:53 2009
@@ -5,6 +5,7 @@
import org.apache.ibatis.executor.result.ResultHandler;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.ParameterMapping;
+import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.transaction.Transaction;
import org.apache.ibatis.type.TypeHandlerRegistry;
@@ -88,17 +89,18 @@
}
public CacheKey createCacheKey(MappedStatement ms, Object parameterObject,
int offset, int limit) {
+ BoundSql boundSql = ms.getBoundSql(parameterObject);
CacheKey cacheKey = new CacheKey();
cacheKey.update(ms.getId());
cacheKey.update(offset);
cacheKey.update(limit);
- if (ms.getDynamicParameterMappings(parameterObject).size() > 0 &&
parameterObject != null) {
+ List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
+ if (parameterMappings.size() > 0 && parameterObject != null) {
TypeHandlerRegistry typeHandlerRegistry =
ms.getConfiguration().getTypeHandlerRegistry();
if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) {
cacheKey.update(parameterObject);
} else {
MetaObject metaObject = MetaObject.forObject(parameterObject);
- List<ParameterMapping> parameterMappings =
ms.getDynamicParameterMappings(parameterObject);
for (ParameterMapping parameterMapping : parameterMappings) {
cacheKey.update(metaObject.getValue(parameterMapping.getProperty()));
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/parameter/DefaultParameterHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/parameter/DefaultParameterHandler.java?rev=759783&r1=759782&r2=759783&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/parameter/DefaultParameterHandler.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/parameter/DefaultParameterHandler.java
Sun Mar 29 21:09:53 2009
@@ -5,6 +5,7 @@
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.ParameterMapping;
import org.apache.ibatis.mapping.ParameterMode;
+import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.type.TypeHandler;
import org.apache.ibatis.type.TypeHandlerRegistry;
@@ -19,11 +20,14 @@
private final MappedStatement mappedStatement;
private final Object parameterObject;
+ private BoundSql boundSql;
- public DefaultParameterHandler(MappedStatement mappedStatement, Object
parameterObject) {
+
+ public DefaultParameterHandler(MappedStatement mappedStatement, Object
parameterObject, BoundSql boundSql) {
this.mappedStatement = mappedStatement;
this.typeHandlerRegistry =
mappedStatement.getConfiguration().getTypeHandlerRegistry();
this.parameterObject = parameterObject;
+ this.boundSql = boundSql;
}
public Object getParameterObject() {
@@ -33,7 +37,7 @@
public void setParameters(PreparedStatement ps)
throws SQLException {
ErrorContext.instance().activity("setting
parameters").object(mappedStatement.getParameterMap().getId());
- List<ParameterMapping> parameterMappings =
mappedStatement.getDynamicParameterMappings(parameterObject);
+ List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
if (parameterMappings != null) {
MetaObject metaObject = parameterObject == null ? null :
MetaObject.forObject(parameterObject);
for (int i = 0; i < parameterMappings.size(); i++) {
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java?rev=759783&r1=759782&r2=759783&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
Sun Mar 29 21:09:53 2009
@@ -33,11 +33,13 @@
private final Object parameterObject;
private final Map nestedResultObjects;
- private CacheKey currentNestedKey;
- private ResultHandler resultHandler;
+ private final ResultHandler resultHandler;
+ private final BoundSql boundSql;
+
+ private CacheKey currentNestedKey;
- public DefaultResultSetHandler(Configuration configuration, Executor
executor, MappedStatement mappedStatement, ParameterHandler parameterHandler,
int rowOffset, int rowLimit, ResultHandler resultHandler) {
+ public DefaultResultSetHandler(Configuration configuration, Executor
executor, MappedStatement mappedStatement, ParameterHandler parameterHandler,
int rowOffset, int rowLimit, ResultHandler resultHandler, BoundSql boundSql) {
this.configuration = configuration;
this.executor = executor;
this.objectFactory = mappedStatement.getConfiguration().getObjectFactory();
@@ -48,6 +50,7 @@
this.parameterObject = parameterHandler.getParameterObject();
this.nestedResultObjects = new HashMap();
this.resultHandler = resultHandler;
+ this.boundSql = boundSql;
}
public List handleResultSets(Statement statement) throws SQLException {
@@ -86,7 +89,7 @@
public void handleOutputParameters(CallableStatement callableStatement)
throws SQLException {
ErrorContext.instance().activity("handling output parameters");
MetaObject metaParam = MetaObject.forObject(parameterObject);
- List<ParameterMapping> parameterMappings =
mappedStatement.getDynamicParameterMappings(parameterObject);
+ List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
for (int i = 0; i < parameterMappings.size(); i++) {
ParameterMapping parameterMapping = parameterMappings.get(i);
if (parameterMapping.getMode() == ParameterMode.OUT ||
parameterMapping.getMode() == ParameterMode.INOUT) {
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java?rev=759783&r1=759782&r2=759783&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java
Sun Mar 29 21:09:53 2009
@@ -8,6 +8,8 @@
import org.apache.ibatis.executor.resultset.ResultSetHandler;
import org.apache.ibatis.mapping.Configuration;
import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.ParameterMapping;
import org.apache.ibatis.reflection.ObjectFactory;
import org.apache.ibatis.type.TypeHandlerRegistry;
@@ -15,6 +17,7 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.List;
public abstract class BaseStatementHandler implements StatementHandler {
@@ -28,7 +31,10 @@
protected final Object parameterObject;
protected final int rowOffset;
protected final int rowLimit;
+
+ protected final List<ParameterMapping> parameterMappings;
protected final String sql;
+ protected final BoundSql boundSql;
protected BaseStatementHandler(Executor executor, MappedStatement
mappedStatement, Object parameterObject, int rowOffset, int rowLimit,
ResultHandler resultHandler) {
this.executor = executor;
@@ -40,10 +46,13 @@
Configuration configuration = mappedStatement.getConfiguration();
this.typeHandlerRegistry = configuration.getTypeHandlerRegistry();
this.objectFactory = configuration.getObjectFactory();
- this.parameterHandler = configuration.newParameterHandler(mappedStatement,
parameterObject);
- this.resultSetHandler = configuration.newResultSetHandler(executor,
mappedStatement, rowOffset, rowLimit, parameterHandler, resultHandler);
- this.sql = mappedStatement.getSql(parameterObject);
+ this.boundSql = mappedStatement.getBoundSql(parameterObject);
+ this.sql = boundSql.getSql();
+ this.parameterMappings = boundSql.getParameterMappings();
+
+ this.parameterHandler = configuration.newParameterHandler(mappedStatement,
parameterObject, boundSql);
+ this.resultSetHandler = configuration.newResultSetHandler(executor,
mappedStatement, rowOffset, rowLimit, parameterHandler, resultHandler,
boundSql);
}
public String getSql() {
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/CallableStatementHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/CallableStatementHandler.java?rev=759783&r1=759782&r2=759783&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/CallableStatementHandler.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/CallableStatementHandler.java
Sun Mar 29 21:09:53 2009
@@ -54,7 +54,6 @@
}
private void registerOutputParameters(CallableStatement cs, MappedStatement
ms) throws SQLException {
- List<ParameterMapping> parameterMappings =
ms.getDynamicParameterMappings(parameterObject);
for (int i = 0, n = parameterMappings.size(); i < n; i++) {
ParameterMapping parameterMapping = parameterMappings.get(i);
if (parameterMapping.getMode() == ParameterMode.OUT ||
parameterMapping.getMode() == ParameterMode.INOUT) {
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java?rev=759783&r1=759782&r2=759783&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
Sun Mar 29 21:09:53 2009
@@ -19,9 +19,9 @@
public int update(Statement statement)
throws SQLException {
if (mappedStatement.getConfiguration().isGeneratedKeysEnabled()) {
- statement.execute(mappedStatement.getSql(parameterObject),
Statement.RETURN_GENERATED_KEYS);
+ statement.execute(sql, Statement.RETURN_GENERATED_KEYS);
} else {
- statement.execute(mappedStatement.getSql(parameterObject));
+ statement.execute(sql);
}
int result = statement.getUpdateCount();
if (mappedStatement.getConfiguration().isGeneratedKeysEnabled()) {
@@ -32,12 +32,12 @@
public void batch(Statement statement)
throws SQLException {
- statement.addBatch(mappedStatement.getSql(parameterObject));
+ statement.addBatch(sql);
}
public List query(Statement statement, ResultHandler resultHandler)
throws SQLException {
- statement.execute(mappedStatement.getSql(parameterObject));
+ statement.execute(sql);
return resultSetHandler.handleResultSets(statement);
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java?rev=759783&r1=759782&r2=759783&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
Sun Mar 29 21:09:53 2009
@@ -174,15 +174,14 @@
this.objectFactory = objectFactory;
}
- public ParameterHandler newParameterHandler(MappedStatement mappedStatement,
Object parameterObject) {
- ParameterHandler parameterHandler = new
DefaultParameterHandler(mappedStatement, parameterObject);
+ public ParameterHandler newParameterHandler(MappedStatement mappedStatement,
Object parameterObject, BoundSql boundSql) {
+ ParameterHandler parameterHandler = new
DefaultParameterHandler(mappedStatement, parameterObject, boundSql);
parameterHandler = (ParameterHandler)
interceptorChain.pluginAll(parameterHandler);
return parameterHandler;
}
- public ResultSetHandler newResultSetHandler(Executor executor,
MappedStatement mappedStatement, int rowOffset, int rowLimit, ParameterHandler
parameterHandler, ResultHandler resultHandler) {
- ResultSetHandler resultSetHandler = new DefaultResultSetHandler(this,
executor, mappedStatement, parameterHandler, rowOffset, rowLimit,
resultHandler);
- resultSetHandler = (ResultSetHandler)
interceptorChain.pluginAll(resultSetHandler);
+ public ResultSetHandler newResultSetHandler(Executor executor,
MappedStatement mappedStatement, int rowOffset, int rowLimit, ParameterHandler
parameterHandler, ResultHandler resultHandler, BoundSql boundSql) {
+ ResultSetHandler resultSetHandler = new DefaultResultSetHandler(this,
executor, mappedStatement, parameterHandler, rowOffset, rowLimit,
resultHandler, boundSql);
return resultSetHandler;
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java?rev=759783&r1=759782&r2=759783&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
Sun Mar 29 21:09:53 2009
@@ -154,18 +154,14 @@
return useCache;
}
- public String getSql(Object parameterObject) {
- BoundSql boundSql = sqlSource.getBoundSql(parameterObject);
- return boundSql.getSql();
- }
-
- public List<ParameterMapping> getDynamicParameterMappings(Object
parameterObject) {
+ public BoundSql getBoundSql(Object parameterObject) {
BoundSql boundSql = sqlSource.getBoundSql(parameterObject);
List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
if (parameterMappings == null || parameterMappings.size() <= 0) {
- parameterMappings = parameterMap.getParameterMappings();
+ boundSql = new BoundSql(boundSql.getSql(),
parameterMap.getParameterMappings());
}
- return parameterMappings;
+ return boundSql;
}
+
}