code: private XmlElement generateSelectiveElement(IntrospectedTable introspectedTable) {
          XmlElement chooseEle = new XmlElement("choose");
  
          XmlElement whenEle = new XmlElement("when");
          whenEle.addAttribute(new Attribute("test", "selective != null and selective.length > 0"));
          chooseEle.addElement(whenEle);
  
          // 生成返回字段节点
          XmlElement keysEle = new XmlElement("foreach");
          whenEle.addElement(keysEle);
          keysEle.addAttribute(new Attribute("collection", "selective"));
          keysEle.addAttribute(new Attribute("item", "column"));
          keysEle.addAttribute(new Attribute("separator", ","));
          keysEle.addElement(new TextElement("${column.aliasedEscapedColumnName}"));
  
          XmlElement otherwiseEle = new XmlElement("otherwise");
          chooseEle.addElement(otherwiseEle);
          // 存在关键词column或者table定义了alias属性,这里直接使用对应的ColumnListElement
          if (introspectedTable.getRules().generateSelectByExampleWithBLOBs()) {
              otherwiseEle.addElement(XmlElementGeneratorTools.getBaseColumnListElement(introspectedTable));
              otherwiseEle.addElement(new TextElement(","));
              otherwiseEle.addElement(XmlElementGeneratorTools.getBlobColumnListElement(introspectedTable));
          } else {
              otherwiseEle.addElement(XmlElementGeneratorTools.getBaseColumnListElement(introspectedTable));
          }
  
          return chooseEle;
      }
docs: 生成Selective xml节点
  @param introspectedTable
  @return