public static String generateRowNumSqlQueryWithNesting(AbstractSqlPagingQueryProvider provider, String innerSelectClause, String outerSelectClause, boolean remainingPageQuery, String rowNumClause) { StringBuilder sql = new StringBuilder(); sql.append("SELECT ").append(outerSelectClause).append(" FROM (SELECT ").append(outerSelectClause) .append(", ").append(StringUtils.hasText(provider.getGroupClause()) ? "MIN(ROWNUM) as TMP_ROW_NUM" : "ROWNUM as TMP_ROW_NUM"); sql.append(" FROM (SELECT ").append(innerSelectClause).append(" FROM ").append(provider.getFromClause()); buildWhereClause(provider, remainingPageQuery, sql); buildGroupByClause(provider, sql); sql.append(" ORDER BY ").append(buildSortClause(provider)); sql.append(")) WHERE ").append(rowNumClause); return sql.toString(); }
/** * Generate SQL query string using a TOP clause * * @param provider {@link AbstractSqlPagingQueryProvider} providing the * implementation specifics * @param remainingPageQuery is this query for the remaining pages (true) as * opposed to the first page (false) * @param topClause the implementation specific top clause to be used * @return the generated query */ public static String generateTopSqlQuery(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery, String topClause) { StringBuilder sql = new StringBuilder(); sql.append("SELECT ").append(topClause).append(" ").append(provider.getSelectClause()); sql.append(" FROM ").append(provider.getFromClause()); buildWhereClause(provider, remainingPageQuery, sql); buildGroupByClause(provider, sql); sql.append(" ORDER BY ").append(buildSortClause(provider)); return sql.toString(); }
/** * Generate SQL query string using a LIMIT clause * * @param provider {@link AbstractSqlPagingQueryProvider} providing the * implementation specifics * @param remainingPageQuery is this query for the remaining pages (true) as * opposed to the first page (false) * @param limitClause the implementation specific limit clause to be used * @return the generated query */ public static String generateLimitSqlQuery(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery, String limitClause) { StringBuilder sql = new StringBuilder(); sql.append("SELECT ").append(provider.getSelectClause()); sql.append(" FROM ").append(provider.getFromClause()); buildWhereClause(provider, remainingPageQuery, sql); buildGroupByClause(provider, sql); sql.append(" ORDER BY ").append(buildSortClause(provider)); sql.append(" " + limitClause); return sql.toString(); }
public static String generateRowNumSqlQueryWithNesting(AbstractSqlPagingQueryProvider provider, String innerSelectClause, String outerSelectClause, boolean remainingPageQuery, String rowNumClause) { StringBuilder sql = new StringBuilder(); sql.append("SELECT ").append(outerSelectClause).append(" FROM (SELECT ").append(outerSelectClause) .append(", ").append(StringUtils.hasText(provider.getGroupClause()) ? "MIN(ROWNUM) as TMP_ROW_NUM" : "ROWNUM as TMP_ROW_NUM"); sql.append(" FROM (SELECT ").append(innerSelectClause).append(" FROM ").append(provider.getFromClause()); buildWhereClause(provider, remainingPageQuery, sql); buildGroupByClause(provider, sql); sql.append(" ORDER BY ").append(buildSortClause(provider)); sql.append(")) WHERE ").append(rowNumClause); return sql.toString(); }
/** * Generate SQL query string using a TOP clause * * @param provider {@link AbstractSqlPagingQueryProvider} providing the * implementation specifics * @param remainingPageQuery is this query for the remaining pages (true) as * opposed to the first page (false) * @param topClause the implementation specific top clause to be used * @return the generated query */ public static String generateTopSqlQuery(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery, String topClause) { StringBuilder sql = new StringBuilder(); sql.append("SELECT ").append(topClause).append(" ").append(provider.getSelectClause()); sql.append(" FROM ").append(provider.getFromClause()); buildWhereClause(provider, remainingPageQuery, sql); buildGroupByClause(provider, sql); sql.append(" ORDER BY ").append(buildSortClause(provider)); return sql.toString(); }
/** * Generate SQL query string using a LIMIT clause * * @param provider {@link AbstractSqlPagingQueryProvider} providing the * implementation specifics * @param remainingPageQuery is this query for the remaining pages (true) as * opposed to the first page (false) * @param limitClause the implementation specific limit clause to be used * @return the generated query */ public static String generateLimitSqlQuery(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery, String limitClause) { StringBuilder sql = new StringBuilder(); sql.append("SELECT ").append(provider.getSelectClause()); sql.append(" FROM ").append(provider.getFromClause()); buildWhereClause(provider, remainingPageQuery, sql); buildGroupByClause(provider, sql); sql.append(" ORDER BY ").append(buildSortClause(provider)); sql.append(" " + limitClause); return sql.toString(); }