/** * 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; }
/** 构建查询语句 */ 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; }