@Override
    public boolean sqlMapDocumentGenerated(Document document, IntrospectedTable introspectedTable) {
        // issues#16
        if (introspectedTable.isConstructorBased()) {
            XmlElement resultMapEle = new XmlElement("resultMap");
            resultMapEle.addAttribute(new Attribute("id", ID_FOR_PROPERTY_BASED_RESULT_MAP));
            resultMapEle.addAttribute(new Attribute("type", introspectedTable.getRules().calculateAllFieldsClass().getFullyQualifiedName()));
            commentGenerator.addComment(resultMapEle);

            for (IntrospectedColumn introspectedColumn : introspectedTable.getPrimaryKeyColumns()) {
                resultMapEle.addElement(XmlElementGeneratorTools.generateResultMapResultElement("id", introspectedColumn));
            }
            for (IntrospectedColumn introspectedColumn : introspectedTable.getNonPrimaryKeyColumns()) {
                resultMapEle.addElement(XmlElementGeneratorTools.generateResultMapResultElement("result", introspectedColumn));
            }
            document.getRootElement().addElement(0, resultMapEle);
        }

        // 1. selectByExampleSelective 方法
        if (this.selectByExampleSelectiveEle != null) {
            FormatTools.addElementWithBestPosition(document.getRootElement(), this.selectByExampleSelectiveEle);
            PluginTools.getHook(ISelectSelectivePluginHook.class).sqlMapSelectByExampleSelectiveElementGenerated(document, this.selectByExampleSelectiveEle, introspectedTable);
        }

        // 2. selectByPrimaryKeySelective
        if (this.selectByPrimaryKeySelectiveEle != null) {
            FormatTools.addElementWithBestPosition(document.getRootElement(), this.selectByPrimaryKeySelectiveEle);
        }

        return true;
    }
@Override
    public boolean sqlMapDocumentGenerated(Document document, IntrospectedTable introspectedTable) {
        
        if (introspectedTable.isConstructorBased()) {
            XmlElement resultMapEle = new XmlElement("resultMap");
            resultMapEle.addAttribute(new Attribute("id", ID_FOR_PROPERTY_BASED_RESULT_MAP));
            resultMapEle.addAttribute(new Attribute("type", introspectedTable.getRules().calculateAllFieldsClass().getFullyQualifiedName()));
            commentGenerator.addComment(resultMapEle);

            for (IntrospectedColumn introspectedColumn : introspectedTable.getPrimaryKeyColumns()) {
                resultMapEle.addElement(XmlElementGeneratorTools.generateResultMapResultElement("id", introspectedColumn));
            }
            for (IntrospectedColumn introspectedColumn : introspectedTable.getNonPrimaryKeyColumns()) {
                resultMapEle.addElement(XmlElementGeneratorTools.generateResultMapResultElement("result", introspectedColumn));
            }
            document.getRootElement().addElement(0, resultMapEle);
        }

        
        if (this.selectByExampleSelectiveEle != null) {
            FormatTools.addElementWithBestPosition(document.getRootElement(), this.selectByExampleSelectiveEle);
            PluginTools.getHook(ISelectSelectivePluginHook.class).sqlMapSelectByExampleSelectiveElementGenerated(document, this.selectByExampleSelectiveEle, introspectedTable);
        }

        
        if (this.selectByPrimaryKeySelectiveEle != null) {
            FormatTools.addElementWithBestPosition(document.getRootElement(), this.selectByPrimaryKeySelectiveEle);
        }

        return true;
    }
@ Override public boolean sqlMapDocumentGenerated ( Document document , IntrospectedTable introspectedTable ) { // issues#16 if ( introspectedTable . isConstructorBased ( ) ) { XmlElement resultMapEle = new XmlElement ( "resultMap" ) ; resultMapEle . addAttribute ( new Attribute ( "id" , ID_FOR_PROPERTY_BASED_RESULT_MAP ) ) ; resultMapEle . addAttribute ( new Attribute ( "type" , introspectedTable . getRules ( ) . calculateAllFieldsClass ( ) . getFullyQualifiedName ( ) ) ) ; commentGenerator . addComment ( resultMapEle ) ; for ( IntrospectedColumn introspectedColumn : introspectedTable . getPrimaryKeyColumns ( ) ) { resultMapEle . addElement ( XmlElementGeneratorTools . generateResultMapResultElement ( "id" , introspectedColumn ) ) ; } for ( IntrospectedColumn introspectedColumn : introspectedTable . getNonPrimaryKeyColumns ( ) ) { resultMapEle . addElement ( XmlElementGeneratorTools . generateResultMapResultElement ( "result" , introspectedColumn ) ) ; } document . getRootElement ( ) . addElement ( 0 , resultMapEle ) ; } // 1. selectByExampleSelective 方法 if ( this . selectByExampleSelectiveEle != null ) { FormatTools . addElementWithBestPosition ( document . getRootElement ( ) , this . selectByExampleSelectiveEle ) ; PluginTools . getHook ( ISelectSelectivePluginHook . class ) . sqlMapSelectByExampleSelectiveElementGenerated ( document , this . selectByExampleSelectiveEle , introspectedTable ) ; } // 2. selectByPrimaryKeySelective if ( this . selectByPrimaryKeySelectiveEle != null ) { FormatTools . addElementWithBestPosition ( document . getRootElement ( ) , this . selectByPrimaryKeySelectiveEle ) ; } return true ; }
具体执行顺序 http://www.mybatis.org/generator/reference/pluggingIn.html
@param document
@param introspectedTable
@return
具体执行顺序 http : // www . mybatis . org / generator / reference / pluggingIn . html