code: @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;
      }
docs: 具体执行顺序 http://www.mybatis.org/generator/reference/pluggingIn.html
  @param document
  @param introspectedTable
  @return