Class AbstractSqlPagingQueryProvider
- All Implemented Interfaces:
PagingQueryProvider
- Direct Known Subclasses:
Db2PagingQueryProvider,DerbyPagingQueryProvider,H2PagingQueryProvider,HanaPagingQueryProvider,HsqlPagingQueryProvider,MariaDBPagingQueryProvider,MySqlPagingQueryProvider,OraclePagingQueryProvider,PostgresPagingQueryProvider,SqlitePagingQueryProvider,SqlServerPagingQueryProvider,SybasePagingQueryProvider
Any implementation must provide a way to specify the select clause, from clause and optionally a where clause. In addition a way to specify a single column sort key must also be provided. This sort key will be used to provide the paging functionality. It is recommended that there should be an index for the sort key to provide better performance.
Provides properties and preparation for the mandatory "selectClause" and "fromClause" as well as for the optional "whereClause". Also provides property for the mandatory "sortKeys". Note: The columns that make up the sort key must be a true key and not just a column to order by. It is important to have a unique key constraint on the sort key to guarantee that no data is lost between executions.
- Since:
- 2.0
- Author:
- Thomas Risberg, Dave Syer, Michael Minella, Mahmoud Ben Hassine, Benjamin Hetz, Stefano Cordio
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract StringgenerateFirstPageQuery(int pageSize) Method generating the query string to be used for retrieving the first page.abstract StringgenerateRemainingPagesQuery(int pageSize) Method generating the query string to be used for retrieving the pages following the first page.protected @Nullable String@Nullable StringThe getter for the group by clauseintThe number of parameters that are declared in the queryprotected @Nullable StringgetSortKeyPlaceHolder(String keyName) The sort key placeholder will vary depending on whether named parameters or traditional placeholders are used in query strings.A Map<String, Boolean> of sort columns as the key and boolean for ascending/descending (ascending = true).The sort key (unique single column name) without alias.protected @Nullable Stringvoidinit(DataSource dataSource) Check mandatory properties.booleanIndicate whether the generated queries use named parameter syntax.voidsetFromClause(String fromClause) voidsetGroupClause(@Nullable String groupClause) The setter for the group by clausevoidsetSelectClause(String selectClause) voidsetSortKeys(Map<String, Order> sortKeys) voidsetWhereClause(@Nullable String whereClause)
-
Constructor Details
-
AbstractSqlPagingQueryProvider
public AbstractSqlPagingQueryProvider()
-
-
Method Details
-
setGroupClause
The setter for the group by clause- Parameters:
groupClause- SQL GROUP BY clause part of the SQL query string
-
getGroupClause
The getter for the group by clause- Returns:
- SQL GROUP BY clause part of the SQL query string
-
setSelectClause
- Parameters:
selectClause- SELECT clause part of SQL query string
-
getSelectClause
- Returns:
- SQL SELECT clause part of SQL query string
-
setFromClause
- Parameters:
fromClause- FROM clause part of SQL query string
-
getFromClause
- Returns:
- SQL FROM clause part of SQL query string
-
setWhereClause
- Parameters:
whereClause- WHERE clause part of SQL query string
-
getWhereClause
- Returns:
- SQL WHERE clause part of SQL query string
-
setSortKeys
- Parameters:
sortKeys- key to use to sort and limit page content
-
getSortKeys
A Map<String, Boolean> of sort columns as the key and boolean for ascending/descending (ascending = true).- Specified by:
getSortKeysin interfacePagingQueryProvider- Returns:
- keys to use to sort and limit page content
-
getParameterCount
public int getParameterCount()Description copied from interface:PagingQueryProviderThe number of parameters that are declared in the query- Specified by:
getParameterCountin interfacePagingQueryProvider- Returns:
- number of parameters
-
isUsingNamedParameters
public boolean isUsingNamedParameters()Description copied from interface:PagingQueryProviderIndicate whether the generated queries use named parameter syntax.- Specified by:
isUsingNamedParametersin interfacePagingQueryProvider- Returns:
- true if named parameter syntax is used
-
getSortKeyPlaceHolder
The sort key placeholder will vary depending on whether named parameters or traditional placeholders are used in query strings.- Specified by:
getSortKeyPlaceHolderin interfacePagingQueryProvider- Parameters:
keyName- The sort key name- Returns:
- placeholder for sortKey.
-
init
Check mandatory properties.- Specified by:
initin interfacePagingQueryProvider- Parameters:
dataSource- DataSource to use for any initialization- Throws:
Exception- for errors when initializing- See Also:
-
InitializingBean.afterPropertiesSet()
-
generateFirstPageQuery
Method generating the query string to be used for retrieving the first page. This method must be implemented in subclasses.- Specified by:
generateFirstPageQueryin interfacePagingQueryProvider- Parameters:
pageSize- number of rows to read per page- Returns:
- query string
-
generateRemainingPagesQuery
Method generating the query string to be used for retrieving the pages following the first page. This method must be implemented in subclasses.- Specified by:
generateRemainingPagesQueryin interfacePagingQueryProvider- Parameters:
pageSize- number of rows to read per page- Returns:
- query string
-
getSortKeysWithoutAliases
Description copied from interface:PagingQueryProviderThe sort key (unique single column name) without alias.- Specified by:
getSortKeysWithoutAliasesin interfacePagingQueryProvider- Returns:
- sortKey key to use to sort and limit page content (without alias)
-