Index: core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/SqlMapGenerator.java =================================================================== --- core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/SqlMapGenerator.java (revision 737371) +++ core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/SqlMapGenerator.java (working copy) @@ -30,6 +30,8 @@ import org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements.InsertSelectiveElementGenerator; import org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements.ResultMapWithBLOBsElementGenerator; import org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements.ResultMapWithoutBLOBsElementGenerator; +import org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements.ColumnsWithBLOBsElementGenerator; +import org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements.ColumnsWithoutBLOBsElementGenerator; import org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements.SelectByExampleWithBLOBsElementGenerator; import org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements.SelectByExampleWithoutBLOBsElementGenerator; import org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements.SelectByPrimaryKeyElementGenerator; @@ -64,6 +66,8 @@ addResultMapWithoutBLOBsElement(answer); addResultMapWithBLOBsElement(answer); + addColumnsWithoutBLOBsElement(answer); + addColumnsWithBLOBsElement(answer); addExampleWhereClauseElement(answer); addSelectByExampleWithBLOBsElement(answer); addSelectByExampleWithoutBLOBsElement(answer); @@ -104,6 +108,20 @@ } } + protected void addColumnsWithoutBLOBsElement(XmlElement parentElement) { + if (introspectedTable.getRules().generateSelectByExampleWithoutBLOBs()) { + AbstractXmlElementGenerator elementGenerator = new ColumnsWithoutBLOBsElementGenerator(); + initializeAndExecuteGenerator(elementGenerator, parentElement); + } + } + + protected void addColumnsWithBLOBsElement(XmlElement parentElement) { + if (introspectedTable.getRules().generateSelectByExampleWithBLOBs()) { + AbstractXmlElementGenerator elementGenerator = new ColumnsWithBLOBsElementGenerator(); + initializeAndExecuteGenerator(elementGenerator, parentElement); + } + } + protected void addSelectByExampleWithoutBLOBsElement(XmlElement parentElement) { if (introspectedTable.getRules().generateSelectByExampleWithoutBLOBs()) { AbstractXmlElementGenerator elementGenerator = new SelectByExampleWithoutBLOBsElementGenerator(); Index: core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/ColumnsWithoutBLOBsElementGenerator.java =================================================================== --- core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/ColumnsWithoutBLOBsElementGenerator.java (revision 0) +++ core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/ColumnsWithoutBLOBsElementGenerator.java (revision 0) @@ -0,0 +1,37 @@ +package org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements; + +import org.apache.ibatis.ibator.api.IntrospectedColumn; +import org.apache.ibatis.ibator.api.dom.xml.Attribute; +import org.apache.ibatis.ibator.api.dom.xml.TextElement; +import org.apache.ibatis.ibator.api.dom.xml.XmlElement; +import org.apache.ibatis.ibator.generator.ibatis2.XmlConstants; + +public class ColumnsWithoutBLOBsElementGenerator extends + AbstractXmlElementGenerator { + + @Override + public void addElements(XmlElement parentElement) { + XmlElement answer = new XmlElement("sql"); //$NON-NLS-1$ + + answer.addAttribute(new Attribute( + "id", XmlConstants.COLUMNS_WITHOUT_BLOBS_ID)); //$NON-NLS-1$ + + ibatorContext.getCommentGenerator().addComment(answer); + + boolean comma = false; + StringBuilder sb = new StringBuilder(); + for (IntrospectedColumn introspectedColumn : introspectedTable + .getNonBLOBColumns()) { + if (comma) { + sb.append(", "); //$NON-NLS-1$ + } else { + comma = true; + } + sb.append(introspectedColumn.getSelectListPhrase()); + } + answer.addElement((new TextElement(sb.toString()))); + + parentElement.addElement(answer); + } + +} Index: core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/SelectByExampleWithoutBLOBsElementGenerator.java =================================================================== --- core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/SelectByExampleWithoutBLOBsElementGenerator.java (revision 737371) +++ core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/SelectByExampleWithoutBLOBsElementGenerator.java (working copy) @@ -16,7 +16,6 @@ package org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements; import org.apache.ibatis.ibator.api.FullyQualifiedTable; -import org.apache.ibatis.ibator.api.IntrospectedColumn; import org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType; import org.apache.ibatis.ibator.api.dom.xml.Attribute; import org.apache.ibatis.ibator.api.dom.xml.TextElement; @@ -55,25 +54,19 @@ StringBuilder sb = new StringBuilder(); sb.append("select "); //$NON-NLS-1$ - boolean comma = false; if (StringUtility.stringHasValue(introspectedTable.getSelectByExampleQueryId())) { sb.append('\''); sb.append(introspectedTable.getSelectByExampleQueryId()); sb.append("' as QUERYID"); //$NON-NLS-1$ - comma = true; + sb.append(", "); } + answer.addElement(new TextElement(sb.toString())); - for (IntrospectedColumn introspectedColumn : introspectedTable.getNonBLOBColumns()) { - if (comma) { - sb.append(", "); //$NON-NLS-1$ - } else { - comma = true; - } + XmlElement includeColumnsElement = new XmlElement("include"); //$NON-NLS-1$ + includeColumnsElement.addAttribute(new Attribute("refid", //$NON-NLS-1$ + table.getSqlMapNamespace() + "." + XmlConstants.COLUMNS_WITHOUT_BLOBS_ID)); //$NON-NLS-1$ + answer.addElement(includeColumnsElement); - sb.append(introspectedColumn.getSelectListPhrase()); - } - answer.addElement((new TextElement(sb.toString()))); - sb.setLength(0); sb.append("from "); //$NON-NLS-1$ sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime()); Index: core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/ColumnsWithBLOBsElementGenerator.java =================================================================== --- core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/ColumnsWithBLOBsElementGenerator.java (revision 0) +++ core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/ColumnsWithBLOBsElementGenerator.java (revision 0) @@ -0,0 +1,41 @@ +package org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements; + +import org.apache.ibatis.ibator.api.IntrospectedColumn; +import org.apache.ibatis.ibator.api.dom.xml.Attribute; +import org.apache.ibatis.ibator.api.dom.xml.TextElement; +import org.apache.ibatis.ibator.api.dom.xml.XmlElement; +import org.apache.ibatis.ibator.generator.ibatis2.XmlConstants; + +public class ColumnsWithBLOBsElementGenerator extends + AbstractXmlElementGenerator { + + public ColumnsWithBLOBsElementGenerator() { + super(); + } + + @Override + public void addElements(XmlElement parentElement) { + XmlElement answer = new XmlElement("sql"); //$NON-NLS-1$ + + answer.addAttribute(new Attribute( + "id", XmlConstants.COLUMNS_WITH_BLOBS_ID)); //$NON-NLS-1$ + + ibatorContext.getCommentGenerator().addComment(answer); + + boolean comma = false; + StringBuilder sb = new StringBuilder(); + for (IntrospectedColumn introspectedColumn : introspectedTable + .getAllColumns()) { + if (comma) { + sb.append(", "); //$NON-NLS-1$ + } else { + comma = true; + } + sb.append(introspectedColumn.getSelectListPhrase()); + } + answer.addElement(new TextElement(sb.toString())); + + parentElement.addElement(answer); + } + +} Index: core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/SelectByExampleWithBLOBsElementGenerator.java =================================================================== --- core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/SelectByExampleWithBLOBsElementGenerator.java (revision 737371) +++ core/src/org/apache/ibatis/ibator/generator/ibatis2/sqlmap/elements/SelectByExampleWithBLOBsElementGenerator.java (working copy) @@ -16,7 +16,6 @@ package org.apache.ibatis.ibator.generator.ibatis2.sqlmap.elements; import org.apache.ibatis.ibator.api.FullyQualifiedTable; -import org.apache.ibatis.ibator.api.IntrospectedColumn; import org.apache.ibatis.ibator.api.dom.java.FullyQualifiedJavaType; import org.apache.ibatis.ibator.api.dom.xml.Attribute; import org.apache.ibatis.ibator.api.dom.xml.TextElement; @@ -54,26 +53,19 @@ StringBuilder sb = new StringBuilder(); sb.append("select "); //$NON-NLS-1$ - boolean comma = false; - if (StringUtility.stringHasValue(introspectedTable.getSelectByExampleQueryId())) { sb.append('\''); sb.append(introspectedTable.getSelectByExampleQueryId()); sb.append("' as QUERYID"); //$NON-NLS-1$ - comma = true; + sb.append(", "); } - - for (IntrospectedColumn introspectedColumn : introspectedTable.getAllColumns()) { - if (comma) { - sb.append(", "); //$NON-NLS-1$ - } else { - comma = true; - } - - sb.append(introspectedColumn.getSelectListPhrase()); - } answer.addElement(new TextElement(sb.toString())); + XmlElement includeColumnsElement = new XmlElement("include"); //$NON-NLS-1$ + includeColumnsElement.addAttribute(new Attribute("refid", //$NON-NLS-1$ + table.getSqlMapNamespace() + "." + XmlConstants.COLUMNS_WITH_BLOBS_ID)); //$NON-NLS-1$ + answer.addElement(includeColumnsElement); + sb.setLength(0); sb.append("from "); //$NON-NLS-1$ sb.append(table.getAliasedFullyQualifiedTableNameAtRuntime()); Index: core/src/org/apache/ibatis/ibator/generator/ibatis2/XmlConstants.java =================================================================== --- core/src/org/apache/ibatis/ibator/generator/ibatis2/XmlConstants.java (revision 737371) +++ core/src/org/apache/ibatis/ibator/generator/ibatis2/XmlConstants.java (working copy) @@ -115,6 +115,16 @@ sb.append(MergeConstants.NEW_XML_ELEMENT_PREFIX); sb.append("Example_Where_Clause"); //$NON-NLS-1$ EXAMPLE_WHERE_CLAUSE_ID = sb.toString(); + + sb.setLength(0); + sb.append(MergeConstants.NEW_XML_ELEMENT_PREFIX); + sb.append("ColumnsWithBLOBs"); // $NON-NLS-1$ + COLUMNS_WITH_BLOBS_ID = sb.toString(); + + sb.setLength(0); + sb.append(MergeConstants.NEW_XML_ELEMENT_PREFIX); + sb.append("ColumnsWithoutBLOBs"); // $NON-NLS-1$ + COLUMNS_WITHOUT_BLOBS_ID = sb.toString(); } public static final String SQL_MAP_SYSTEM_ID = "http://ibatis.apache.org/dtd/sql-map-2.dtd"; //$NON-NLS-1$ @@ -162,4 +172,8 @@ public static final String RESULT_MAP_WITH_BLOBS_ID; public static final String EXAMPLE_WHERE_CLAUSE_ID; + + public static final String COLUMNS_WITH_BLOBS_ID; + + public static final String COLUMNS_WITHOUT_BLOBS_ID; }