Author: gk
Date: Tue Apr 16 10:10:44 2024
New Revision: 1917022

URL: http://svn.apache.org/viewvc?rev=1917022&view=rev
Log:
TORQUE-364 add static sql expressions and use them together with lookup set in 
loop in processRow method

Modified:
    
db/torque/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/recordMapperBase.vm

Modified: 
db/torque/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/recordMapperBase.vm
URL: 
http://svn.apache.org/viewvc/db/torque/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/recordMapperBase.vm?rev=1917022&r1=1917021&r2=1917022&view=diff
==============================================================================
--- 
db/torque/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/recordMapperBase.vm
 (original)
+++ 
db/torque/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/recordmapper/base/recordMapperBase.vm
 Tue Apr 16 10:10:44 2024
@@ -31,7 +31,9 @@ package ${baseRecordMapperPackage};
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -96,6 +98,12 @@ public class ${baseRecordMapperClassName
     /** The class log. */
     private static Log log
             = LogFactory.getLog(${baseRecordMapperClassName}.class);
+            
+    ## Cached SQL expressions to speed up looking for columns selected by a 
given Criteria
+#foreach ($columnElement in $torqueGen.getChildren("column"))
+    #set ( $peerColumnName = $columnElement.getAttribute("peerColumnName") )
+    private static final String ${peerColumnName}_EXPRESSION = 
${basePeerClassName}.${peerColumnName}.getSqlExpression();
+#end
 
     /**
      * Constructs the object from the current row in the resultSet.
@@ -150,12 +158,12 @@ $torqueGen.mergepoint("createDbObjectIns
             {
                 // try to get columns to be mapped
                 // from criteria's select columns
-                boolean columnMapped = false;
                 int totalOffset = offset + 1;
                 List<Column> selectColumns = criteria.getSelectColumns();
                 List<Column> columnsWithoutOffset = selectColumns.subList(
                         offset, 
                         selectColumns.size());
+                Set<String> columnsMapped = new HashSet<String>();
                 for (Column column : columnsWithoutOffset)
                 {
 #set ( $else = "" )
@@ -163,18 +171,18 @@ $torqueGen.mergepoint("createDbObjectIns
   #set ( $setter = $columnElement.getAttribute("setter") )
   #set ( $getter = $columnElement.getAttribute("getter") )
   #set ( $peerColumnName = $columnElement.getAttribute("peerColumnName") )
-                    ${else}if 
(${basePeerClassName}.${peerColumnName}.getSqlExpression().equals(
+                    ${else}if 
(!columnsMapped.contains(${peerColumnName}_EXPRESSION ) && 
${peerColumnName}_EXPRESSION.equals(
                             column.getSqlExpression()))
                     {
                         ${field}.${setter}(
                             ${getter}(resultSet, totalOffset));
-                        columnMapped = true;
+                        columnsMapped.add( ${peerColumnName}_EXPRESSION );
                     }
   #set ( $else = "else ")
 #end
                     totalOffset++;
                 }
-                if (!columnMapped)
+                if (columnsMapped.isEmpty())
                 {
                     log.debug("no columns to map found in criteria, "
                         + "returning null");



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscr...@db.apache.org
For additional commands, e-mail: torque-dev-h...@db.apache.org

Reply via email to