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: [email protected]
For additional commands, e-mail: [email protected]