Example #1
0
  @Override
  public String toString() {
    String sql = "";

    sql = "CREATE " + (unlogged ? "UNLOGGED " : "") + "TABLE " + table;

    if (select != null) {
      sql += " AS " + select.toString();
    } else {
      sql += " (";

      sql += PlainSelect.getStringList(columnDefinitions, true, false);
      if (indexes != null && indexes.size() != 0) {
        sql += ", ";
        sql += PlainSelect.getStringList(indexes);
      }
      sql += ")";
      String options = PlainSelect.getStringList(tableOptionsStrings, false, false);
      if (options != null && options.length() > 0) {
        sql += " " + options;
      }
    }

    return sql;
  }
 /**
  * convert to order by sql
  *
  * @param sql
  * @param orderBy
  * @return
  */
 public static String converToOrderBySql(String sql, String orderBy) {
   // 解析SQL
   Statement stmt = null;
   try {
     stmt = CCJSqlParserUtil.parse(sql);
     Select select = (Select) stmt;
     SelectBody selectBody = select.getSelectBody();
     // 处理body-去最外层order by
     List<OrderByElement> orderByElements = extraOrderBy(selectBody);
     String defaultOrderBy = PlainSelect.orderByToString(orderByElements);
     if (defaultOrderBy.indexOf('?') != -1) {
       throw new RuntimeException("原SQL[" + sql + "]中的order by包含参数,因此不能使用OrderBy插件进行修改!");
     }
     // 新的sql
     sql = select.toString();
   } catch (Throwable e) {
     e.printStackTrace();
   }
   return sql + " order by " + orderBy;
 }