org.springframework.batch.item.database.support

## Class SqlPagingQueryUtils

- java.lang.Object
- - org.springframework.batch.item.database.support.SqlPagingQueryUtils

-     public class SqlPagingQueryUtils
      extends java.lang.Object

  Utility class that generates the actual SQL statements used by query providers.
  Since:
    2.0
  Author:
    Thomas Risberg, Dave Syer, Michael Minella

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SqlPagingQueryUtils()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static java.lang.String` | `buildSortClause(AbstractSqlPagingQueryProvider provider)` Generates ORDER BY attributes based on the sort keys.
    `static java.lang.String` | `buildSortClause(java.util.Map<java.lang.String,Order> sortKeys)` Generates ORDER BY attributes based on the sort keys.
    `static void` | `buildSortConditions(AbstractSqlPagingQueryProvider provider, java.lang.StringBuilder sql)` Appends the where conditions required to query for the subsequent pages.
    `static java.lang.String` | `generateGroupedTopSqlQuery(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery, java.lang.String topClause)` Generate SQL query string using a TOP clause
    `static java.lang.String` | `generateLimitGroupedSqlQuery(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery, java.lang.String limitClause)` Generate SQL query string using a LIMIT clause
    `static java.lang.String` | `generateLimitJumpToQuery(AbstractSqlPagingQueryProvider provider, java.lang.String limitClause)` Generate SQL query string using a LIMIT clause
    `static java.lang.String` | `generateLimitSqlQuery(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery, java.lang.String limitClause)` Generate SQL query string using a LIMIT clause
    `static java.lang.String` | `generateRowNumSqlQuery(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery, java.lang.String rowNumClause)` Generate SQL query string using a ROW_NUM condition
    `static java.lang.String` | `generateRowNumSqlQuery(AbstractSqlPagingQueryProvider provider, java.lang.String selectClause, boolean remainingPageQuery, java.lang.String rowNumClause)` Generate SQL query string using a ROW_NUM condition
    `static java.lang.String` | `generateRowNumSqlQueryWithNesting(AbstractSqlPagingQueryProvider provider, java.lang.String selectClause, boolean remainingPageQuery, java.lang.String rowNumClause)`
    `static java.lang.String` | `generateRowNumSqlQueryWithNesting(AbstractSqlPagingQueryProvider provider, java.lang.String innerSelectClause, java.lang.String outerSelectClause, boolean remainingPageQuery, java.lang.String rowNumClause)`
    `static java.lang.String` | `generateTopJumpToQuery(AbstractSqlPagingQueryProvider provider, java.lang.String topClause)` Generate SQL query string using a TOP clause
    `static java.lang.String` | `generateTopSqlQuery(AbstractSqlPagingQueryProvider provider, boolean remainingPageQuery, java.lang.String topClause)` Generate SQL query string using a TOP clause

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SqlPagingQueryUtils

          public SqlPagingQueryUtils()

  - ### Method Detail

    - #### generateLimitSqlQuery

          public static java.lang.String generateLimitSqlQuery(AbstractSqlPagingQueryProvider provider,
                                                               boolean remainingPageQuery,
                                                               java.lang.String limitClause)

      Generate SQL query string using a LIMIT clause
      Parameters:
        `provider` - `AbstractSqlPagingQueryProvider` providing the implementation specifics
        `remainingPageQuery` - is this query for the remaining pages (true) as opposed to the first page (false)
        `limitClause` - the implementation specific limit clause to be used
      Returns:
        the generated query

    - #### generateLimitGroupedSqlQuery

          public static java.lang.String generateLimitGroupedSqlQuery(AbstractSqlPagingQueryProvider provider,
                                                                      boolean remainingPageQuery,
                                                                      java.lang.String limitClause)

      Generate SQL query string using a LIMIT clause
      Parameters:
        `provider` - `AbstractSqlPagingQueryProvider` providing the implementation specifics
        `remainingPageQuery` - is this query for the remaining pages (true) as opposed to the first page (false)
        `limitClause` - the implementation specific limit clause to be used
      Returns:
        the generated query

    - #### generateTopSqlQuery

          public static java.lang.String generateTopSqlQuery(AbstractSqlPagingQueryProvider provider,
                                                             boolean remainingPageQuery,
                                                             java.lang.String topClause)

      Generate SQL query string using a TOP clause
      Parameters:
        `provider` - `AbstractSqlPagingQueryProvider` providing the implementation specifics
        `remainingPageQuery` - is this query for the remaining pages (true) as opposed to the first page (false)
        `topClause` - the implementation specific top clause to be used
      Returns:
        the generated query

    - #### generateGroupedTopSqlQuery

          public static java.lang.String generateGroupedTopSqlQuery(AbstractSqlPagingQueryProvider provider,
                                                                    boolean remainingPageQuery,
                                                                    java.lang.String topClause)

      Generate SQL query string using a TOP clause
      Parameters:
        `provider` - `AbstractSqlPagingQueryProvider` providing the implementation specifics
        `remainingPageQuery` - is this query for the remaining pages (true) as opposed to the first page (false)
        `topClause` - the implementation specific top clause to be used
      Returns:
        the generated query

    - #### generateRowNumSqlQuery

          public static java.lang.String generateRowNumSqlQuery(AbstractSqlPagingQueryProvider provider,
                                                                boolean remainingPageQuery,
                                                                java.lang.String rowNumClause)

      Generate SQL query string using a ROW_NUM condition
      Parameters:
        `provider` - `AbstractSqlPagingQueryProvider` providing the implementation specifics
        `remainingPageQuery` - is this query for the remaining pages (true) as opposed to the first page (false)
        `rowNumClause` - the implementation specific row num clause to be used
      Returns:
        the generated query

    - #### generateRowNumSqlQuery

          public static java.lang.String generateRowNumSqlQuery(AbstractSqlPagingQueryProvider provider,
                                                                java.lang.String selectClause,
                                                                boolean remainingPageQuery,
                                                                java.lang.String rowNumClause)

      Generate SQL query string using a ROW_NUM condition
      Parameters:
        `provider` - `AbstractSqlPagingQueryProvider` providing the implementation specifics
        `selectClause` - `String` containing the select portion of the query.
        `remainingPageQuery` - is this query for the remaining pages (true) as opposed to the first page (false)
        `rowNumClause` - the implementation specific row num clause to be used
      Returns:
        the generated query

    - #### generateRowNumSqlQueryWithNesting

          public static java.lang.String generateRowNumSqlQueryWithNesting(AbstractSqlPagingQueryProvider provider,
                                                                           java.lang.String selectClause,
                                                                           boolean remainingPageQuery,
                                                                           java.lang.String rowNumClause)

    - #### generateRowNumSqlQueryWithNesting

          public static java.lang.String generateRowNumSqlQueryWithNesting(AbstractSqlPagingQueryProvider provider,
                                                                           java.lang.String innerSelectClause,
                                                                           java.lang.String outerSelectClause,
                                                                           boolean remainingPageQuery,
                                                                           java.lang.String rowNumClause)

    - #### generateLimitJumpToQuery

          public static java.lang.String generateLimitJumpToQuery(AbstractSqlPagingQueryProvider provider,
                                                                  java.lang.String limitClause)

      Generate SQL query string using a LIMIT clause
      Parameters:
        `provider` - `AbstractSqlPagingQueryProvider` providing the implementation specifics
        `limitClause` - the implementation specific top clause to be used
      Returns:
        the generated query

    - #### generateTopJumpToQuery

          public static java.lang.String generateTopJumpToQuery(AbstractSqlPagingQueryProvider provider,
                                                                java.lang.String topClause)

      Generate SQL query string using a TOP clause
      Parameters:
        `provider` - `AbstractSqlPagingQueryProvider` providing the implementation specifics
        `topClause` - the implementation specific top clause to be used
      Returns:
        the generated query

    - #### buildSortClause

          public static java.lang.String buildSortClause(AbstractSqlPagingQueryProvider provider)

      Generates ORDER BY attributes based on the sort keys.
      Parameters:
        `provider` - the `AbstractSqlPagingQueryProvider` to be used for used for pagination.
      Returns:
        a String that can be appended to an ORDER BY clause.

    - #### buildSortClause

          public static java.lang.String buildSortClause(java.util.Map<java.lang.String,Order> sortKeys)

      Generates ORDER BY attributes based on the sort keys.
      Parameters:
        `sortKeys` - `Map` where the key is the name of the column to be sorted and the value contains the `Order`.
      Returns:
        a String that can be appended to an ORDER BY clause.

    - #### buildSortConditions

          public static void buildSortConditions(AbstractSqlPagingQueryProvider provider,
                                                 java.lang.StringBuilder sql)

      Appends the where conditions required to query for the subsequent pages.
      Parameters:
        `provider` - the `AbstractSqlPagingQueryProvider` to be used for pagination.
        `sql` - `StringBuilder` containing the sql to be used for the query.