Пример #1
0
 /**
  * Build a statement that returns a 1 by 1 table with a numeric value. SELECT COUNT(*) FROM table;
  */
 public SQLStatement createStatementForCount() {
   StringBuilder query = new StringBuilder(120);
   query.append(SELECT_COUNT).append(getTableName());
   SQLStatement stmt = new SQLStatement();
   if (whereBuilder != null) {
     query.append(whereBuilder.createWhereString());
     stmt.bindArgs = whereBuilder.transToStringArray();
   }
   stmt.sql = query.toString();
   return stmt;
 }
Пример #2
0
  /** 构建查询语句 */
  public SQLStatement createStatement() {
    if (clazz == null) {
      throw new IllegalArgumentException(
          "U Must Set A Query Entity Class By queryWho(Class) or " + "QueryBuilder(Class)");
    }
    if (Checker.isEmpty(group) && !Checker.isEmpty(having)) {
      throw new IllegalArgumentException(
          "HAVING仅允许在有GroupBy的时候使用(HAVING clauses are only permitted when using a groupBy clause)");
    }
    if (!Checker.isEmpty(limit) && !limitPattern.matcher(limit).matches()) {
      throw new IllegalArgumentException("invalid LIMIT clauses:" + limit);
    }

    StringBuilder query = new StringBuilder(120);

    query.append(SELECT);
    if (distinct) {
      query.append(DISTINCT);
    }
    if (!Checker.isEmpty(columns)) {
      appendColumns(query, columns);
    } else {
      query.append(ASTERISK);
    }
    query.append(FROM).append(getTableName());

    query.append(whereBuilder.createWhereString());

    appendClause(query, GROUP_BY, group);
    appendClause(query, HAVING, having);
    appendClause(query, ORDER_BY, order);
    appendClause(query, LIMIT, limit);

    SQLStatement stmt = new SQLStatement();
    stmt.sql = query.toString();
    stmt.bindArgs = whereBuilder.transToStringArray();
    return stmt;
  }