code: @SuppressWarnings("unchecked")
      public static SqlInfo buildSqlInfo(String nameSpace, SqlInfo sqlInfo, Node node, Object paramObj) {
          // 获取所有子节点，并分别将其使用StringBuilder拼接起来
          List<Node> nodes = node.selectNodes(ZealotConst.ATTR_CHILD);
          for (Node n: nodes) {
              if (ZealotConst.NODETYPE_TEXT.equals(n.getNodeTypeName())) {
                  // 如果子节点node 是文本节点，则直接获取其文本
                  sqlInfo.getJoin().append(n.getText());
              } else if (ZealotConst.NODETYPE_ELEMENT.equals(n.getNodeTypeName())) {
                  // 如果子节点node 是元素节点，则再判断其是什么元素，动态判断条件和参数
                  ConditContext.buildSqlInfo(new BuildSource(nameSpace, sqlInfo, n, paramObj), n.getName());
              }
          }
  
          return buildFinalSql(sqlInfo, paramObj);
      }
docs: 构建完整的SqlInfo对象.
  
  @param nameSpace xml命名空间
  @param sqlInfo SqlInfo对象
  @param node dom4j对象节点
  @param paramObj 参数对象
  @return 返回SqlInfo对象