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