Soporte de paginación en la capa de servicios de datos
La paginación se utiliza para devolver varias "páginas de datos" cuando únicamente es necesario recuperar un número de entradas de datos a la vez. La capa de servicios de datos da soporte a la paginación de datos y establece límites de resultado para la paginación.
Generalmente, la paginación se lleva a cabo utilizando consultas de dos pasos. En la primera fase de una consulta de dos pasos se realiza la búsqueda y se encuentran las claves primarias del conjunto de resultados. Esto corresponde a la búsqueda de XPath. En la segunda fase, se recupera la información detallada para cada fila en el conjunto de resultados. Esto corresponde al perfil de acceso.
A veces, la paginación se puede utilizar para una consulta de un solo paso, si devuelve un registro por clave primaria de la tabla base.
Establecimiento de límite de resultado para todo el módulo de servicio
<_config:dataservice dataMediatorType="JDBC"
metadataClass="com.ibm.commerce.catalog.example.server.metadata.CatalogExampleMetadata"
maximumPagingResultLimit="5000">
</_config:dataservice>
Cuando el cliente solicita la paginación, si se consultan más filas de las especificadas por maximumPagingResultLimit se producirá una excepción.Cómo soporta la paginación la plantilla de consulta
BEGIN_XPATH_TO_SQL_STATEMENT
<!-- fetch all CATENTRY records given a set of part numbers -->
<!-- xpath = "/CatEntry[@catEntryId<123]" -->
name=/CatEntry[@catEntryId<]+CatalogPaging
paging_result_limit=50
entity_table=CATENTRY
dbtype=db2
sql=
SELECT CATENTRY.$COLS:CATENTRY$
FROM CATENTRY WHERE CATENTRY.CATENTRY_ID < ?catEntryId? AND
CATENTRY.MARKFORDELETE = 0 ORDER BY CATENTRY.CATENTRY_ID
paging_count
sql =
SELECT
COUNT(*) as ct
from
CATENTRY
where
CATENTRY.CATENTRY_ID < ?catEntryId? AND
CATENTRY.MARKFORDELETE = 0
END_XPATH_TO_SQL_STATEMENT
Sentencia SQL de cuenta de paginación (paging_count)
paging_count
sql =
SELECT
COUNT(*) as ct
from
CATENTRY
where
CATENTRY.CATENTRY_ID < ?catEntryId? AND
CATENTRY.MARKFORDELETE = 0
- La sentencia SQL paging_count debe utilizarse para consultas de un solo paso.
- La sentencia SQL de cuenta de paginación (paging_count) no es necesaria para consultas de dos pasos.
- Las consultas de búsqueda paramétrica no deben especificar las sentencias SQL paging_count (cuenta de paginación).