code: private XmlElement generateInsertColumnSelective(List<IntrospectedColumn> columns) {
          XmlElement insertColumnsChooseEle = new XmlElement("choose");
  
          XmlElement insertWhenEle = new XmlElement("when");
          insertWhenEle.addAttribute(new Attribute("test", "selective != null and selective.length > 0"));
          insertColumnsChooseEle.addElement(insertWhenEle);
  
          XmlElement insertForeachEle = new XmlElement("foreach");
          insertForeachEle.addAttribute(new Attribute("collection", "selective"));
          insertForeachEle.addAttribute(new Attribute("item", "column"));
          insertForeachEle.addAttribute(new Attribute("open", "("));
          insertForeachEle.addAttribute(new Attribute("separator", ","));
          insertForeachEle.addAttribute(new Attribute("close", ")"));
          insertForeachEle.addElement(new TextElement("${column.escapedColumnName}"));
          insertWhenEle.addElement(insertForeachEle);
  
          XmlElement insertOtherwiseEle = new XmlElement("otherwise");
          insertOtherwiseEle.addElement(XmlElementGeneratorTools.generateKeysSelective(columns, "record."));
          insertColumnsChooseEle.addElement(insertOtherwiseEle);
  
          XmlElement insertTrimElement = new XmlElement("trim");
          insertTrimElement.addAttribute(new Attribute("prefix", "("));
          insertTrimElement.addAttribute(new Attribute("suffix", ")"));
          insertTrimElement.addAttribute(new Attribute("suffixOverrides", ","));
          insertOtherwiseEle.addElement(insertTrimElement);
  
          return insertColumnsChooseEle;
      }
docs: insert column selective
  @param columns
  @return