code: private String[] underscoreName(String camelCaseName) {
          StringBuilder result = new StringBuilder();
          if (camelCaseName != null && camelCaseName.length() > 0) {
              result.append(camelCaseName.substring(0, 1).toLowerCase());
              for (int i = 1; i < camelCaseName.length(); i++) {
                  char ch = camelCaseName.charAt(i);
                  if (Character.isUpperCase(ch)) {
                      result.append("_");
                      result.append(Character.toLowerCase(ch));
                  } else {
                      result.append(ch);
                  }
              }
          }
          String name = result.toString();
          // 当name为user1_name2时，使name2为user_1_name_2
          // 这使得列user_1_name_2的列能映射到user1Name2属性
          String name2 = null;
          boolean digitFound = false;
          for (int i = name.length() - 1; i >= 0; i--) {
              if (Character.isDigit(name.charAt(i))) {
              	// 遇到数字就做一个标识并continue,直到不是时才不continue
                  digitFound = true;
                  continue;
              }
              // 只有上一个字符是数字才做下划线
              if (digitFound && i < name.length() - 1 && i > 0) {
                  if (name2 == null) {
                      name2 = name;
                  }
                  name2 = name2.substring(0, i + 1) + "_" + name2.substring(i + 1);
              }
              digitFound = false;
          }
          return new String[] { name, name2 };
      }
docs: Convert a name in camelCase to an underscored name in lower case.
  Any upper case letters are converted to lower case with a preceding
  underscore.
  
  @param camelCaseName the string containing original name
  @return the converted name