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;
   }
 
+
 }


Reply via email to